在linux下怎么编译和运行java程序

在linux下怎么编译和运行java程序,第1张

同时加载编译多个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客户端---

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 在linux下怎么编译和运行java程序

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情