1

我的网站托管在 ubuntu 上的 Apache 上。我得到了一个 JAR 文件,里面有两个文件夹和一些 .class 和 .scc 文件。假设 jar 文件名 = myJarfile,此存档中的文件夹 = 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 程序员,谷歌搜索并没有让我知道如何运行它。

类/或 JAR 文件应该在我的本地主机上启动一个 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)

请建议。

泰。拉杰夫

_ OK __我通过导出指向 .jar 文件的 CLASSPATH 变量解决了这个问题:

export CLASSPATH="/full/path/to/myJarfile.jar"

然后执行良好:

$ java myFolder.myClass

启动守护进程....

但老实说,我不知道这里发生了什么。这个 .jar 文件中有两个文件夹:myFolder 和一个 META-INF。myFolder 有一堆 .class 文件和一个 .scc 文件。他们都没有被命名为“主要”....

我很感激时间和帮助扩展到我。

泰。拉杰夫

4

1 回答 1

0

尝试将“-jar”标志添加到“java”。

假设“jar”文件创建了一个独立进程,您可以通过将启动命令添加到 /etc/rc.local 来将 Java 进程设置为在启动时启动。如果它是一项重要服务,您还需要对其进行监视以确保它正在运行,并准备好手动停止和启动它。如果您检测到它已挂起或未运行,您也可以考虑自动重新启动。

至于从 Perl 访问它,您需要从提供它的人那里获取文档。我希望它可以在端口上运行或创建可以连接的套接字。无论哪种情况,它都是 Java 应用程序都没有关系。Perl 用于连接端口或套接字的标准方法将适用。

关于 Classpath,如果您还没有阅读 Classpath,我建议您阅读一些文档。如果对最佳变体有疑问,请询问您的 JAR 文件提供者以确定。

另见:

于 2012-08-07T16:17:26.630 回答