在linux下怎么编译和运行java程序
同时加载编译多个jar包和java文件
在个人平常使用或者当我们把代码部署到linux服务器上的时候,我们经常需要通过命令行编译和运行java文件,网上关于这个的方法大多是通过
javac -cp filePath/jarNamejar javaNamejava1
这种方法。但是加入在filepath文件夹下面有好几个jar包,在src文件夹中有好几个java文件的时候,这个方法就很笨拙了,我在网上看的资料非常乱,其实下面一个非常简单的指令就可以解决了:
javac -Djavaextdirs=filePath java//注意这里只需要指定到jar包所在的文件夹就可以了1
其中java表示可以一次编译所有的java文件。
把编译文件放到指定目录
如果想要把编译后的文件放到指定目录,只需要在java文件后加上 -d outputFilePath就可以了,例如下面:
javac -Djavaextdirs=filePath java -d outputFilePath1
执行java文件
执行java程序页是同样,只需要把javac换成java,后面写上主函数所在的java文件的名称就可以了,不用加后缀。例如下面
javac -Djavaextdirs=filePath MainJavaName1
如果想要把编译后的文件放到指定目录,只需要在java文件后加上 -d outputFilePath就可以了
java 应用程序在linux部署方法:
1,将项目达成war包(用eclipse,项目右键--Export--选择war file)
2,将tomcat(用winSCP当然也可以用secureCRT,用securCRT需要建立sftp(即上传文件的目录),用put tomcat命令)考到ilunx对应的目录下
3,然后将项目的war包放到tomcat的webapps目录下
4,启动tomcat(命令:/startupsh(linux下启动tomcat是sh文件而非bat文件))
遇到问题如下:
运行/startupsh 是报错
-bash: /startupsh: Permission denied
原因:没有运行sh的权限
解决:chmod 777 sh
755 代表用户对该文件拥有读,写,执行的权限,同组其他人员拥有执行和读的权限,没有写的权限,其他用户的权限和同组人员权限一样。
777代表,user,group ,others ,都有读写和可执行权限。
获得权限后再运行/startupsh命令时报错:
This file is needed to run this program
原因:该文件需要一个运行环境(即配置jdk环境变量)
解决:JAVA_HOME=/usr/java/jdk160_25/(当然这个目录根据自己的jdk安装目录)
然后在运行/startupsh 提示:
Using CATALINA_BASE: /usr/local/sarft/apache/apache-tomcat-6029
Using CATALINA_HOME: /usr/local/sarft/apache/apache-tomcat-6029
Using CATALINA_TMPDIR: /usr/local/sarft/apache/apache-tomcat-6029/temp
Using JRE_HOME: /usr/java/jdk160_25/
Using CLASSPATH: /usr/local/sarft/apache/apache-tomcat-6029/bin/bootstrapjar
如果提示以上信息表明 tomcat启动成功,可以正常run了。
您好,在网上有挺多版本,C JAVA的都有,我找了一个还可以,有源码,大概试了试效果还不错。需要下载一个ganymed-ssh2-build210 http://wwwganymedethzch/ssh2/ 代码部分大概是这样的。
import javaioIOException;
import javaioInputStream;
import javaioUnsupportedEncodingException;
import javaniocharsetCharset;
import chethzssh2ChannelCondition;
import chethzssh2Connection;
import chethzssh2Session;
import chethzssh2StreamGobbler;
public class RmtShellExecutor {
private Connection conn;
private String ip;
private String usr;
private String psword;
private String charset = CharsetdefaultCharset()toString();
private static final int TIME_OUT = 1000 5 60;
public RmtShellExecutor(ShellParam param) {
thisip = paramgetIp();
thisusr = paramgetUsername();
thispsword = paramgetPassword();
}
class ShellParam{
String ip;
String usr;
String psword;
String getIp(){
return ip;
};
String getUsername(){
return usr;
}
String getPassword(){
return psword;
}
}
public RmtShellExecutor(String ip, String usr, String ps) {
thisip = ip;
thisusr = usr;
thispsword =ps;
}
private boolean login() throws IOException {
conn = new Connection(ip);
connconnect();
return connauthenticateWithPassword(usr, psword);
}
public int exec(String cmds) throws Exception {
InputStream stdOut = null;
InputStream stdErr = null;
String outStr = "";
String outErr = "";
int ret = -1;
try {
if (login()) {
// Open a new {@link Session} on this connection
Session session = connopenSession();
// Execute a command on the remote machine
sessionexecCommand(cmds);
stdOut = new StreamGobbler(sessiongetStdout());
outStr = processStream(stdOut, charset);
stdErr = new StreamGobbler(sessiongetStderr());
outErr = processStream(stdErr, charset);
sessionwaitForCondition(ChannelConditionEXIT_STATUS, TIME_OUT);
Systemoutprintln("" + outStr);
ret = sessiongetExitStatus();
} else {
Systemoutprintln("登录远程机器失败"+ ip);
}
} finally {
if (conn != null) {
connclose();
}
}
return ret;
}
private String processStream(InputStream in, String charset) throws Exception {
byte[] buf = new byte[1024];
StringBuilder sb = new StringBuilder();
while (inread(buf) != -1) {
sbappend(new String(buf, charset));
}
return sbtoString();
}
public static void main(String args[]) throws Exception {
RmtShellExecutor exe = new RmtShellExecutor("", "", "");
Systemoutprintln(exeexec("ls"));
}
}
你得明白,启动远程的服务,首先得连接到服务器上去。
下面有两种方法:1、通过自定义程序;
2、使用现成的telnet或ssh(推荐)
方法1、首先得看linux服务器的限制,如果服务器允许自定义的登录,
并且你在服务器上运行了一个监听某端口(如1234)的程序,
写一个client端,用socket连接上去,就可以执行了。
方法2、如果服务器支持ssh或者telnet登录,且
允许远程执行脚本的话,可以直接登录进去(当然这算是
使用现成的程序吧,ssh更安全,不过或许不是你想要的。)
有现成的ssh服务,直接使用就是了,自己写的肯定没这个安全~~
要用java的话,应该也有现成的ssh客户端---
0条评论