[英]running java file from shell script
我是刚开始通过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"
我正在使用带有maven命令install的STS(Eclipse)运行Java文件。 并能够运行我的类“ Main” java程序。
您无需指定-mainclass
,只需为类提供main即可。 此外,类路径也具有您的类的com.abc前缀。 您可能希望将classpath作为当前目录,然后提供您的类。 如果您的JDBC不在类路径中,您还将收到一个错误。 尝试这样的事情:
java -Xmx300m -classpath . \
com.abc.files.payroll.f401k.xyz.AdpCwMain \
-driver org.hsqldb.jdbc.JDBCDriver
使用#!/bin/bash -x
以显示实际执行的命令。
您在名为Main.java的文件上调用“ java”命令,则应首先使用“ javac”编译Main.java类。 当程序以.class结尾时使用“ java”,即Main.class
在执行该行之前,您无需编译代码。
run.sh中缺少javac行
您为什么不尝试j2sch,它会使您的生活变得更加简单。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.