2017-07-31 76 views
2

我在IntelliJ中建立並執行成功的Java項目。 現在我想打包代碼(即將其打包,以便它可以在Linux環境中執行)。編譯Java文件和外部庫Linux

目錄結構:

../parser/src/com/test1/java 
bash-4.2$ ls -R 
external Jparser Main.java 

./external: 
java-json.jar 

./Jparser: 
JsonParser.class JsonParser.java 

到目前爲止,我已經執行javac -cp ../external/java-json.jar Parser.java

什麼是下一個步驟? Parser.java的類路徑是否爲main?

編輯: 我特別感興趣的是要學習如何在命令行中更好地理解Java。我喜歡gradle,maven,IDEs,但它們都有各種各樣的黑盒魔法,這通常很方便,但讓初學者用戶認爲他們知道Java構建的...

+1

你是否試過https://stackoverflow.com/questions/1082580/how-to-build-jars-from-intellij-properly建立一個jar(如果你有一個依賴項)? –

+0

@RomanPuchkovskiy感謝您的參考。我想學習如何在Linux CLi上構建它(作爲一種學習體驗),從而消除Jet Brains的黑魔法(儘管我喜歡它)。 –

+0

您還可以使用[Maven]創建可運行的.jar(https://stackoverflow.com/questions/574594/how-can-i-create-an-executable-jar-with-dependencies-using-maven?rq= 1)或Gradle –

回答

0

不清楚Jparser是否是您的包主模塊,或者它是一個子模塊目錄。

  1. 如果這是你僅模塊內部的包,然後

javac -cp ../external/java-json.jar Main.java Jparser/JsonParser.java

jar cvf my.jar Main.class JsonParser

  • 如果這是一個模塊,那麼我'd複製Main.java和JsonParser.java到另一個目錄,然後
  • javac -cp ../external/java-json.jar *.java

    jar cvf my.jar *.class

    然後運行它:java -cp my.jar:../external/java-json.jar Main

    一種更好的方法來組織構建將使用Maven https://maven.apache.org/或螞蟻http://ant.apache.org/ IDEA可以生成的Ant構建使用Build->Generate Ant Build

    +0

    謝謝你的回答。 'Jparser'是我編寫的一個類,由'Main'執行' –

    +0

    './Jparser:'由此可以看出'Jparser'是一個目錄,所以它不能是一個類,但它可以是一個包含類的包。 –