一直以来都是在eclipse中编译运行程序,慢慢都成了一种依赖了,如果没有eclipse我都不知道某些函数是在哪个包下。当然javac ,java这两个命令还是经常使用的,每次装完JDK,配置完环境变量都会写一个简单的helloworld程序来检查下到底有没有配置成功。我的理论就是,既然有eclipse这么好的工具了,为什么还要选择那刀耕火种的方法呢,工具生产出来不就是为了大家使用起来方便,不用自己再去弄那么多东西了。当然,这是以前的想法,工具是可以方便我们日常开发中的很多工作,但是,该会的一些东西还是要会,不是说会经常用,而是万一找不到工具的时候,我们还可以借助这些最原始的方法去继续执行,而不是苦苦等待工具的来临。哦,好像扯远了。言归正传。我把一些工具类打成了一个jar包,然后用一个主程序去调用,在eclipse中运行是正确的。老大让我把这个jar包和程序放到指定的服务器上。我突然想到,这个服务器上可没有eclipse,那总不能再下个eclipse到服务器上吧。想到了刀耕火种的办法。以前用的都是那种特简单的,不用带jar包的编译和运行,可是现在显然是不一样了呀。在网上找了一些资料。
拿我的程序为例,我只想用stomp.jar这个包,主程序名叫Stompp.java
javac -cp stomp.jar Stompp.java
java -classpath stomp.jar ; Stompp
其实就是这么简单。开始时候,我把第二行中的分号给漏掉了,然后运行时就出现“无法加载主类”的问题,但是我用那个简单的helloworld程序测试就是好的,这就说明肯定是这边运行时候参数指定的有问题,找了半天,添上个分号,程序就可以正常运行了。
我想起来,以前学java时候好像问过老师,他说的可复杂了,也许他也没试过吧。
今天在centos下编译程序,发现按上述方法是行不通的。忘了说一句了,上述的都是在xp下测试通过的,而在linux下编译是有区别的。具体格式为:
javac -classpath dom4j.jar Test.java --引入需要的包
java -classpath .:dom4j.jar Test --引入包, . 是Test.class在当前文件夹; : 是分隔符
原理我不清楚,但是证明是可以正常编译和运行的