2017-05-03 75 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'但它仍然显示旧的错误。 –