我正在为cron
中的任务运行openshift
作业,这是我的脚本
ROOT_DIR='$OPENSHIFT_REPO_DIR'
if [ $(($minute % 2)) -eq 0 ]; then
java OPENSHIFT_REPO_DIRsrc.main.java.com.fs.sstore.communicator.scheduler.RechargeScheduler
fi
server.log
上发生以下错误:
无法找到或加载课程。
我正在尝试运行单个java文件。
任何帮助将不胜感激。
答案 0 :(得分:3)
好吧,您可能需要指定其CLASSPATH
。使用-cp
。从命令行尝试:
java -cp "$OPENSHIFT_REPO_DIR" src.main.java.com.fs.sstore.communicator.scheduler.RechargeScheduler
或者去班级的基地(我猜$OPENSHIFT_REPO_DIR
),然后再跑:
cd $OPENSHIFT_REPO_DIR
java -cp . src.main.java.com.fs.sstore.communicator.scheduler.RechargeScheduler
顺便说一下,确保RechargeScheduler
的包src.main.java.com.fs.sstore.communicator.scheduler
为src
。
奇怪的是它以StackOverflow.java
开头。它通常意味着它的源位置,但它不是包的一部分。
====更新====
让我们举一个简单的例子。想象一下这样的一个类,其/home/user/workspace/XTest/src/test/StackOverflow.java
文件位于test
:
请注意,在这种情况下,套餐为src.test
且不 package test;
public class StackOverflow {
public static void main(String[] args) {
System.out.println("Hello world!");
}
}
Main-Class
有几种方法可以从命令行运行此类:
使用没有cd /home/user/workspace/XTest/src //if its .class is in ./test/StackOverflow.class
jar cvf /home/user/jar/stackOverflow.jar test/StackOverflow.class
条目的Jar :
创建JAR:
cd /home/user/jar
java -cp stackOverflow.jar test.StackOverflow
生成jar后,可以运行:
Main-Class
将Jar与Manifest-Version: 1.0
Main-Class: test.StackOverflow
条目:
使用如下条目创建MANIFEST.MF文件:
cd /home/user/workspace/XTest/src //if its .class is in ./test/StackOverflow.class
jar cvfm /home/user/jar/stackOverflow.jar MANIFEST.MF test/StackOverflow.class
然后创建JAR:
cd /home/user/jar
java -jar stackOverflow.jar
运行:
test
不使用jar
转到cd /home/user/workspace/XTest/src
包所在的位置,并在其内容下编译类
-rw-r--r-- 1 User group 5123 Mar 3 11:01 test/StackOverflow.class
如果您在此列出内容,您应该看到类似的内容:
java -cp . test.StackOverflow
运行:
java -cp /home/user/workspace/XTest/src/. test.StackOverflow
现在,您可以从任何其他位置运行这些示例。
例如,在案例3中,可以运行:
java -jar /home/user/jar/stackOverflow.jar
或者案例2:
{{1}}
希望你能适应这个例子。