我想弄清楚在Windows中解決長類路徑問題的方法。雖然我在Linux中(這就是爲什麼下面的示例是unix格式的),但最終用戶可能在linux中,而且我知道問題發生了。長Java類路徑解決方案
我的應用程序下載並創建它需要運行的jar和文件的字符串。它比生成一個字符串如:
java -classpath path_to_file1:path_to_file2:path_to_file3 jvm_args MainClass
並運行該應用程序。這在Linux中正常工作,但在Windows中爆炸,因爲類路徑太長。
我的理解這個問題,我已經嘗試了提出的解決方案:(!它是在classpath)How to set a long Java classpath in Windows?
但是我沒有成功,因爲路徑MainClass沒有找到。下面是我做的:
我有以下文件夾結構:
[root]
├── classes
│ └── com
│ └── tst
│ ├── CPTest1.class
│ ├── CPTest2.class
│ └── CPTest3.class
└── com
└── tst
├── CPTest1.java
├── CPTest2.java
└── CPTest3.java
類是通過調用編譯:
javac -d classes -cp . com/tst/*
這裏是文件:
CPTest1 .java
package com.tst;
public class CPTest1{
public static void main(String[] args) {
System.out.println ("Run CPTest1.main()");
}
}
CPTest2.java
package com.tst;
public class CPTest2 {
public static void main(String[] args) {
System.out.println ("Run CPTest2.main()");
CPTest1 cpt1 = new CPTest1();
}
}
CPTest3.java
package com.tst;
public class CPTest3 {
public static void main(String[] args) {
System.out.println ("Run CPTest3.main()");
CPTest1 cpt1 = new CPTest1();
CPTest2 cpt2 = new CPTest2();
}
}
現在,如果我在[根]並運行:
java -cp classes com.tst.CPTest3
我看到了正確的輸出。 但是,如果我第一次產生了「尋路罐子」爲我指出表明,通過創建一個文件解決方案: cpTest.txt(我已經相對和完整路徑嘗試這樣做)
Class-Path: classes
和使用創建的jar:
jar -cvfm cp.jar cpTest.txt
比終於嘗試運行:
java -cp cp.jar com.tst.CPTest3
所有我GE t是找不到CPTest3類的錯誤:
Error: Could not find or load main class com.tst.CPTest3
我在想什麼? 感謝您的幫助!
你確定com.tst.CPTest3在cp.jar中嗎?您可以通過解壓縮該jar來輕鬆檢查。如果你在類路徑上需要很多jar文件,也可以使用清單文件:https://docs.oracle.com/javase/tutorial/deployment/jar/downman.html – inovaovao
這是否只適用於jar?我創建的jar不包含帶有類路徑條目的Manifest文件以外的任何內容。我明白這是在我提到的帖子回答背後的想法 – fditz
可能的重複[如何在Windows中設置一個長的Java類路徑?](https://stackoverflow.com/questions/201816/how-to-set-a -long-java-classpath-in-windows) – rghome