2017-05-03 70 views
0

我爲波紋管的Java類:如何包含java庫到shell腳本

package test.shell.com; 
public class RunTest { 
    public static void main(String[] args) { 
    System.out.print("Hello"); 
    } 
} 

從shell腳本,我的代碼波紋管:

#!/bin/sh 
java test.shell.com.RunTest 

當我運行通過Cygwin的shell文件。它返回的結果爲波紋管:

enter image description here

所以,當我使用Java庫中的java程序爲:

package test.shell.com; 

import org.json.simple.JSONObject; 

public class RunTest { 

    public static void main(String[] args) { 
     JSONObject test = new JSONObject(); 
     test.put("name","Test"); 
     System.out.print("Hello" + test.get("name")); 
    } 
} 

並再次運行shell腳本,它顯示錯誤消息波紋管:

enter image description here

我知道shell腳本不知道的JSON庫,但我不知道如何將它包含進SH ell腳本。請幫助...

+0

你需要做一個罐子所有導入的庫。 [關於jar文件](https://docs.oracle.com/javase/tutorial/deployment/jar/index.html) –

+0

這不是不知道庫的shell腳本,它是程序本身。要麼它不存在於你的系統中,要麼你需要指定正確的類路徑 – arco444

+0

@YevhenDanchenko你能描述更多有關使用所有導入的lib創建jar的細節嗎? –

回答

0

您需要將jar的路徑添加到param,並使用「java -classpath」命令來運行它。

例如:CLASSPATH = yourownjar.jar:xxx.jar:/xx/xx/xxx1.jar: 「$ CLASSPATH」(yourownjar和JDK的classpath配置也應包括在這PARAM)

而且然後用java -classpath運行:

的java -classpath $ {CLASSPATH} xx.Main

+0

仍然無法正常工作,當我添加類路徑,它顯示此錯誤**錯誤:主類test.shell.com.RunTest無法找到或無法加載 ** –

+1

@HocN今年,我忘了,你自己的jar也應該包含在classpath中。 – Solo

+0

@MaxllowFox我添加了我的jar文件,如: 'CLASSPATH =/test/shell/com/test.jar:/test/shell/com/json-simple-1.1.jar java -classpath $ {CLASSPATH} test.shell .com.RunTest'但它仍然顯示舊的錯誤。 –