在openshift中从cron运行java类文件

时间:2015-02-25 11:09:38

标签: java cron

我正在为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文件。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:3)

好吧,您可能需要指定其CLASSPATH。使用-cp。从命令行尝试:

java -cp "$OPENSHIFT_REPO_DIR" src.main.java.com.fs.sstore.communicator.scheduler.Recharg‌​eScheduler

或者去班级的基地(我猜$OPENSHIFT_REPO_DIR),然后再跑:

cd $OPENSHIFT_REPO_DIR
java -cp . src.main.java.com.fs.sstore.communicator.scheduler.Recharg‌​eScheduler

顺便说一下,确保Recharg‌​eScheduler的包src.main.java.com.fs.sstore.communicator.schedulersrc
奇怪的是它以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

有几种方法可以从命令行运行此类:

  1. 使用没有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
  2. 将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
  3. 不使用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 
    
  4. 现在,您可以从任何其他位置运行这些示例。
    例如,在案例3中,可以运行:

    java -jar /home/user/jar/stackOverflow.jar 
    

    或者案例2:

    {{1}}

    希望你能适应这个例子。