2013-07-12 19 views
0

我无法解决这个问题,我试图通过bash脚本执行java程序。无法执行Java程序的Linux脚本

为什么我得到这个错误?

Exception in thread "main" java.lang.NoClassDefFoundError: com/QuoteTester 
Caused by: java.lang.ClassNotFoundException: com.QuoteTester 
     at java.net.URLClassLoader$1.run(URLClassLoader.java:202) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:306) 
     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:247) 
Could not find the main class: com.QuoteTester. Program will exit. 

这是我的脚本内容quotetest.sh

java -cp ./com/ug_ugbapi-all.jar com.QuoteTester $1 

我执行脚本,这样

./quotetest.sh GOOG 

从目录从我在哪里执行这个脚本quotetest.sh,在我得到了一个名称com目录下我得到了ug_ugbapi-all.jar and QuoteTester.class classes

想尽选项(把所有的文件在同一文件夹中的COM,但是毫无效果)

有谁请告诉我如何解决这个问题?

+1

关闭此线程之前,我可以知道答案pleaseeee? – Kiran

+0

有两个问题:1)如果你从shell运行java,它是否工作? 2)你的脚本的第一行是什么? #!/ bin/sh?你确定你没有产生一个缺少一些基本环境变量的shell吗? –

+0

这是需要的#!/ bin/sh ?? – Kiran

回答

2

用你给定的类路径,Java是只有去看jar文件。对于它找到罐子外的类文件,你必须修改-cp论点:

java -cp ./com/ug_ugbapi-all.jar:. com.QuoteTester $1 
+0

嘿,谢谢你的工作,我会将它标记为正确的。 – Kiran

0

您收到此错误,因为com/QuoteTester类不能被找到,这意味着com/QuoteTester类不上类路径。