[問題] 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