我是通过shell脚本运行java文件的新手,对于那些经验丰富或掌握shell脚本知识的人来说,这可能是一个非常基本的问题。我在
下有一个名为Main.java的java文件C:\project\Tranmissions\com.abc.files\src\main\java\com\abc\files
+Main.java
我有一个名为run.sh的shell脚本:
#!/bin/bash
java -Xmx300m -classpath com.abc.files.Main -mainclass com.abc.files.payroll.f401k.xyz.AdpCwMain -driver org.hsqldb.jdbc.JDBCDriver
exit $?
我放在
下的这个脚本C:\project\Tranmissions\com.abc.files.
现在,我已经下载了cygwin来运行脚本
./run.sh
当我运行它时,我得到以下基本的java错误:
java.lang.NoClassDefFoundError: com/abc/files/Main
Caused by: java.lang.ClassNotFoundException: com.abc.files.Main
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.abc.files.Main. Program will exit.
Exception in thread "main"
我正在使用STS(Eclipse)和maven命令安装来运行java文件。并能够运行我的类“主”java程序。
答案 0 :(得分:1)
您不需要指定-mainclass
,只需为该类提供主要内容即可。类路径也有你的类的com.abc前缀。您可能希望类路径成为当前目录,然后给您的类。如果您的JDBC不在类路径中,您也会收到错误。尝试这样的事情:
java -Xmx300m -classpath . \
com.abc.files.payroll.f401k.xyz.AdpCwMain \
-driver org.hsqldb.jdbc.JDBCDriver
使用#!/bin/bash -x
运行以显示实际执行的命令。
答案 1 :(得分:0)
在名为Main.java的文件上调用“java”命令,首先应使用“javac”编译Main.java类。当程序以.class结尾时使用“java”,即Main.class
答案 2 :(得分:0)
在执行该行之前,您没有编译代码。
run.sh
中缺少javac行为什么不试试j2sch,它会让你的生活变得更加简单。