2012-10-27 186 views
2

我不知道如何編譯和運行Java程序與另一個庫。 我看了很多關於這個的帖子,但沒有一個幫助。他們中的大多數只是圍繞它而不是提供一個體面的例子。儘管在過去的一週嘗試,但我無法讓它工作。Java類路徑庫(jar)

想象我有以下結構(〜是主目錄):

  • 〜/ Graph.java
  • 〜/ jmathplot.jar

Graph.java始於:

import org.math.plot.Plot2DPanel; 

public class Graph { ... } 

它(org.math.plot)對應於.jar結構。所以從我讀的(如果我從〜目錄運行):

javac -classpath ./jmathplot.jar Graph.java 

這應該工作。但事實並非如此。它只是從jmathplot.jar生成一堆.class文件,當試圖運行它時,我得到NoClassDefFoundError。如果我從jmathplot.jar中提取「org」文件夾並將其放在Graph.java旁邊,它可以完美地工作(這是預期的);你甚至不需要指定類路徑。

我認爲classpath是指導JVM在哪裏查找文件。指定jmathplot.jar指示JVM在jmathplot.jar中查找/ org/math/plot結構。

我在哪裏錯了?有人能給我一個正確的方式來編譯和運行這個Graph.java嗎?我將不勝感激。謝謝!

回答

1

爲什麼你不使用可以爲你工作的IDE(Eclipse,Netbeans ...)?

+0

嗯,我寫了它在Eclipse和它的工作,但我需要知道如何做它一般。 – RobertDeNiro

+0

javac -cp pathToYourJarFile.jar Graph.java –

0

嘗試使用正斜槓並且沒有點。就像這樣: javac -cp \jmathplot.jar Graph.java

+0

同樣的結果。雖然謝謝! – RobertDeNiro

0

你讓所有的.class文件編譯成/path/to/some/dir後,你可以運行它:

java -cp "~/jmathplot.jar;/path/to/some/dir/*" com.package.YourMainClass 
+0

我不太明白你的意思是「/ path/to/some/dir/*」。 – RobertDeNiro

+0

我的意思是,當你編譯你的'Graph.java'時,你生成了一堆'.class'文件,就像你自己說的那樣,它們被生成到你當前的工作目錄中。所以這個目錄應該在類路徑上,所以Java可以知道在哪裏找到那些編譯過的'.class'文件。 –