2012-09-21 151 views
0

我正在嘗試將我的java文件編譯成類。 它是一個更大的程序的插件,並且從源代碼運行時它可以很好地運行。編譯java時找不到軟件包

我在Linux下工作,並在外殼我鍵入以下javac MyPlugin.java

這只是一些輸出:

MyPlugin.java:11: package javolution.util does not exist 
import javolution.util.FastList; 
        ^
MyPlugin.java:12: package javolution.util does not exist 
import javolution.util.FastMap; 
        ^
MyPlugin.java:14: package org.apache.log4j does not exist 
import org.apache.log4j.Logger; 
        ^
MyPlugin.java:15: package org.jwebsocket.api does not exist 
import org.jwebsocket.api.PluginConfiguration; 
         ^

我的假設是錯誤的其餘部分,因爲進口造成無法連接。

我是否需要在原始命令中添加一些內容以包含這些導入?

+4

您需要將這些JAR添加到類路徑中。考慮使用Maven。 – SLaks

+0

檢查您的Java CLASSPATH:http://javarevisited.blogspot.com/2011/01/how-classpath-work-in-java.html – Gareth

回答

1

你缺少罐子:

http://javolution.org/

http://logging.apache.org/log4j/1.2/

http://jwebsocket.org/

您可以下載缺少的JAR文件,並將其包含在你的編譯類路徑。

或者,您可以讓maven管理您的應用程序的下載和編譯。

更新:在一個地方收集所有外部罐子一起

爲了得到在一個地方,你可以使用在Eclipse中創建一個可運行的JAR所有的外部庫:

Export...->Java->Runnable JAR File 

輸入your_temp_jar.jar並點擊

Copy required libraries into a sub-folder next to the generated JAR 

點擊Finish後所有需要的j ars將位於名爲your_temp_jar_lib的文件夾中。

+0

我已經擁有了我需要的所有東西的jar文件,這就是eclipse如何運行它們。你能告訴我是否有一種方法可以獲得所有使用Eclipse的類路徑,所以我可以使用相同的方法來編譯? –

+0

你可以把所有的JARS放在一起(見更新)。然後,爲您的編譯構建一個冒號':'分隔類路徑列表。 – Reimeus

+0

太棒了,這對我有很大的幫助。總結未來的觀衆:在完成上述操作後,我將命令更改爲如下所示:「javac -cp'/ path/to/your_temp_jar_lib/*'MyPlugin.java。 –

0

您應該在類路徑中指定包含以下類的jar文件。

javolution.util.FastList 
javolution.util.FastMap 
org.apache.log4j.Logger 
org.jwebsocket.api.PluginConfiguration 

可以使用-cp指定罐子的類路徑。

0

在命令行鍵入javac不是構建java代碼的可行或可擴展的方法。雖然您可以使用-cp到javac將所需的依賴關係添加到此編譯中,但通過學習ant或maven可以更好地服務您。

從以下項目