我正在嘗試解決部分問題。這是我的第一部分我需要創建一個 JAR,從 Java 類調用該 JAR 并在命令行中執行它。這是我所做的。目錄結構:root->com->test->sample->Sample1.javaSample1.java是這樣的: package com.test.sample; public class Sample1 { // --- Native methods //public native boolean booleanMethod(boolean bool); // --- Main method to test our native library public void Sample1() { } public void callingBool() { //System.loadLibrary("Sample1"); //boolean bool = this.booleanMethod(true); //System.out.println("booleanMethod: returned" + bool); System.out.println("booleanMethod: Called without loading sample"); } }我從這個轉到根目錄中創建了一個 Jar。使用命令 jar cvf asd.jar com Output: added manifest adding: com/(in = 0) (out= 0)(stored 0%) adding: com/test/(in = 0) (out= 0)(stored 0%) adding: com/test/sample/(in = 0) (out= 0)(stored 0%) adding: com/test/sample/Sample1.java(in = 494) (out= 236) (deflated 52%) jar -tf asd.jar META-INF/ META-INF/MANIFEST.MF com/ com/test/ com/test/sample/ com/test/sample/Sample1.java所以現在創建了 JAR。我將 JAR 復制粘貼到另一個目錄“jaronly”將另一個 Java 文件 Sample1Caller 添加到 /jaronly 中: import com.test.sample.Sample1; public class Sample1Caller { // --- Native methods //public native boolean booleanMethod(boolean bool); // --- Main method to test our native library public static void main(String[] args) { //System.loadLibrary("Sample1"); Sample1 sample = new Sample1(); sample.callingBool(); System.out.println("Callled Sample1 now" ); } }在此之后,我在 /jaronly 中編譯 Sample1Caller.javajavac -cp .:./asd.jar Sample1Caller.java這會編譯并生成 2 個類文件 Sample1Caller.class 和 Sample1.class我不確定是否應該創建 Sample1.class(我已經從 asd.jar 中引用它)它編譯但不執行。我的執行命令或生成 .jar 文件或使用 java 編譯 jar 有問題嗎?
1 回答

慕桂英546537
TA貢獻1848條經驗 獲得超10個贊
JAR 文件應該包含類而不是源代碼。所以在制作asd.jar 之前,您應該先編譯Sample1.java。這條線可以解決問題
javac com/test/sample/*.java
但是 Sample1.java 仍將位于 JAR 中,您不希望它存在于此。
要為您的構建添加更多結構,我建議您創建以下文件夾結構:
sample_project
sample_project/src
sample_project/src/com/test/sample/Sample1.java
sample_project/target
sample_project/build.bat
然后 build.bat 的內容將是:
:: compile
cd src
javac com/test/sample/*.java -d ../target
:: create jar
cd ../target
jar cvf asd.jar com
:: finish
cd ..
添加回答
舉報
0/150
提交
取消