[问题] Eclipse换用command line编译 执行

楼主: chisilence (毛毛)   2014-12-08 16:35:15
因为一些因素从eclipse转为使用command line来编译执行程式
遇到了一些设定上的问题 想请教JAVA版的各位
OS为Linux Suse
安装的jdk 为 1.7.0_71
以下是我 /etc/profile中的设定
export JAVA_HOME="/usr/java/jdk1.7.0_71"
export PATH=/usr/java/jdk1.7.0_71/bin:$PATH
export CLASSPATH=.:$CLASSPATH:/usr/java/jdk1.7.0_71
程式码的路径为/user/test/HelloWorld.java
并将所需的jar放置在test资料夹中
import net.sf.ehcache.Cache;
import net.sf.ehcache.CacheManager;
import net.sf.ehcache.Element;
public class HelloWorld {
public static void main(final String[] args) {
final CacheManager cacheManager = new CacheManager();
final Cache dataStore = cacheManager.getCache("hello-world");
final String key = "greeting";
final Element putGreeting = new Element(key, "Hello, World!");
dataStore.put(putGreeting);
final Element getGreeting = dataStore.get(key);
System.out.println(getGreeting.getObjectValue());
}
}
程式码的部分有在eclipse执行过确认没有问题
原本在eclipse执行时可加入external jar
使用javac 编译时用 javac -cp ehcache-ee-2.9.0.jar HelloWorld.java
可编译成功 用 java -cp . HelloWorld 出现以下错误
Exception in thread "main" java.lang.NoClassDefFoundError:
net/sf/ehcache/CacheManager
at HelloWorld.main(HelloWorld.java:10)
参考过精华区的path jar那篇M文
有尝试把所需的jar档放置 jdk1.7.0_71/jre/lib/ext中
可直接使用javac HelloWorld.java编译成功
使用java -cp . HelloWorld 出现以下错误
Exception in thread "main" java.lang.NullPointerException
at HelloWorld.main(HelloWorld.java:22)
想请教JAVA版的各位
在CLASSPATH的部分是否设定有误
另假如我想要在任一资料夹中编写程式 ex file.java
并直接在该资料夹使用 javac file.java 编译 并用 java file直接执行
这样file.java中所使用到的第三方jar档
是要放置在jdk1.7.0_71/jre/lib/ext中
或者是放置在特定资料夹 在将该资料夹的路径设定在CLASSPATH中
恳请各位指点
作者: pico2k (风月)   2014-12-08 19:32:00
用到的jar档要个别设定...
作者: kogrs (kogrs)   2014-12-09 01:08:00
你的jar 没加到class path 下
作者: Killercat (杀人猫™)   2014-12-09 04:31:00
用ant/maven会简单一点 不然你的java会长的一大串或者可以参考一下gradle

Links booklink

Contact Us: admin [ a t ] ucptt.com