簡體   English   中英

Java類無法在Linux中找到或加載主類,但Windows確定

[英]Java class could not find or load main class in Linux, but Windows ok

使用流程構建器在自己的OS流程中啟動其他Java應用程序。 該實現適用於Windows 7,但不適用於Linux。 兩台機器都使用Java 1.7。 這是一些示例代碼:

//Windows OK, but Linux Could not find or load main class 
//weka.subspaceClusterer.MySubspaceClusterEvaluation 

ArrayList<String> commands = new ArrayList<String>();
commands.add("java");
commands.add("-cp");
commands.add("\".:lib/*\"");
commands.add("weka.subspaceClusterer.MySubspaceClusterEvaluation");
procBuilder = new ProcessBuilder();
procBuilder.inheritIO();
procBuilder.command(commands);
Process proc = procBuilder.start();

類路徑分隔符是; 在Windows下,但是:在Unix下。

考慮創建一個可運行的jar,其中您的類路徑存儲在MANIFEST.MF條目中,因此您只需執行java -jar whatever.jar

我在Mac OS X上遇到了類似的問題。它在Terminal中工作但在Eclipse中沒有。 如果我刪除類路徑字符串周圍的引號,它對我有用。 我猜Eclipse JVM在傳遞給ProcessBuilder的任何參數周圍都有引號時不喜歡它。

您的代碼看起來正確。 它只是找不到你的類文件。 嘗試設置進程的工作目錄:

procBuilder.directory(new File("package/structure/starts/here"));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM