我的网站托管在ubuntu上的Apache上。我收到了一个JAR文件,里面有两个文件夹和一些.class和.scc文件。让我们说jar文件名= myJarfile,这个archive = myFolder里面的文件夹,这个文件夹里的Class是= myClass。
我被告知要像这样运行这个类:
java myFolder.myClass
但是我收到了这个错误:
$ java myFolder.myClass
Exception in thread "main" java.lang.NoClassDefFoundError: myFolder/myClass
Caused by: java.lang.ClassNotFoundException: esGateKeeper.cookieServer
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:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
Could not find the main class: myFolder/myClass. Program will exit.
我也尝试过:
$ java myJarfile.myFolder.myClass
Exception in thread "main" java.lang.NoClassDefFoundError: myJarfile/myFolder/myClass
Caused by: java.lang.ClassNotFoundException: myJarfile.myFolder.myClass
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:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
Could not find the main class: myJarfile.myFolder.myClass. Program will exit.
管理员告诉我这是CLASSPATH问题。我不知道。我的网站使用PERL CGI而不使用JAVA。我不是JAVA程序员,谷歌搜索没有让我知道如何让这个运行。
Class /或JAR文件应该在我的localhost上启动一个IPC守护进程,我将从PERL CGI进行通信,以进行身份验证。它解密我从浏览器获得的cookie。我不确定在我的服务器上需要安装什么才能运行。我有如下java:
$ java -version
java version "1.6.0_21"
Java(TM) SE Runtime Environment (build 1.6.0_21-b06)
Java HotSpot(TM) Client VM (build 17.0-b16, mixed mode, sharing)
Pl建议。
TY。 拉杰夫
_ 确定 __ 我通过导出指向.jar文件的CLASSPATH变量解决了这个问题:
export CLASSPATH="/full/path/to/myJarfile.jar"
然后执行正常:
$ java myFolder.myClass
启动守护程序......
但说实话,我不知道这里发生了什么。这个.jar文件中有两个文件夹:myFolder和META-INF。 myFolder有一堆.class文件和一个.scc文件。其中没有一个被命名为“主要”....
我很感激时间和帮助延伸到我。
TY。 拉杰夫
答案 0 :(得分:0)
尝试将“-jar”标志添加到“java”。
假设“jar”文件创建了一个独立进程,您可以通过将启动命令添加到/etc/rc.local来将Java进程设置为在启动时启动。如果它是一项重要的服务,您还需要监控它以确保它正在运行,并准备好手动停止并启动它。如果您检测到它已挂起或未运行,您可能还会考虑自动重新启动。
就从Perl访问它而言,您需要从提供它的人那里获取文档。我希望它可以在端口上运行,也可以创建一个可以连接的套接字。在任何一种情况下,它都是Java应用程序并不重要。 Perl用于连接端口或套接字的标准方法将适用。
关于Classpath,如果你还没有,我建议你阅读一些documentation for Classpath。如果对最佳变体有疑问,请询问您的JAR文件提供商是否确定。
另见: