2011-05-18 68 views
-1

我有以下設置:使用javac從不同目錄編譯文件,引用依賴的jar文件?

我有4個包:

  • 根/ src目錄/終端 - 有一定的Java文件
  • 根/ src目錄/郵件 - 有一定的Java文件
  • 根/ SRC /數據 - 具有一些java文件
  • 根/ SRC /主 - 具有單個Java文件,Main.java

我也有以下文件

  • 根/箱 - 存儲的.class文件的文件夾
  • 根/ mail.jar中 - 這在我的代碼

用在重要的類jar文件根,我想輸入一個編譯root/src/main/Main.java的終端命令,並將類文件放入根/ bin位置。

有人可以告訴我這個命令嗎?我在Mac上(運行Leopard)。

回答

1

這裏是一個班輪:

cd /xyz/root 
rm -rf bin/* 
javac -d bin -classpath mail.jar -sourcepath src main/Main.java 

或者,你可以使用絕對路徑:

rm -rf /xyz/root/bin/* 
javac -d /xyz/root/bin -classpath /xyz/root/mail.jar \ 
     -sourcepath /xyz/root/src /xyz/root/ main/Main.java 

在談到螞蟻你說「我寧願保持簡單。」

事實上,從長遠來看,創建一個簡單的Ant build.xml文件更簡單。另一種選擇是一堆不可移植的腳本或批處理文件......或大量的輸入。


要運行應用程序,假設你仍然在/xyz/root目錄:

java -classpath bin:mail.jar main.Main 

或Windows:

java -classpath bin;mail.jar main.Main 

或修改上述使用的絕對路徑類路徑參數;例如

java -classpath /xyz/root/bin:/xyz/root/mail.jar main.Main 
+0

當我使用java命令運行程序時,有什麼特別的我需要做。這工作得很好! – CodeGuy 2011-05-18 12:00:34

1

不知道您的操作系統?

你應該看看什麼是使用Apache Ant。它是一種構建工具,一旦安裝和配置,就可以利用根中的build.xml文件將類文件編譯到文件夾以及打包jar文件。

http://ant.apache.org/

+0

我寧願保持簡單。有一個簡單的一線解決方案,我正在尋找。我不打包罐子。我只是試圖鏈接jar,所以我的java文件知道該jar存在,因爲我導入該jar包含的類。 – CodeGuy 2011-05-18 11:41:12

1

試試這個:

javac -cp "/root/mail.jar;/root/src;" -d "/root/bin" Main.java 

這是寫入祝願你倆包聲明在你的類從src文件夾一樣package terminal;package main;

看到這個:Options in javac command

或者使用Apache Ant的通過maple_shaft的建議。


從評論給由@maple_shaft:
在UNIX,LINUX操作系統的類路徑分隔符是一個冒號而不是分號。

+0

我有包聲明。不幸的是,這仍然不起作用。它說,沒有找到包終端(在我的Main.java中,我導入terminal.Terminal.java) – CodeGuy 2011-05-18 11:44:56

+0

也,因爲Main.java是在一個包中,我使它成爲main/Main.java而不是 – CodeGuy 2011-05-18 11:47:50

+0

@Harry,In Unix,Linux操作系統類路徑分隔符是一個冒號而不是分號。但除此之外,你是對的。 – 2011-05-18 11:49:27

相關問題