将 JAR 文件放在 Apache 中的什么位置?以及如何从 Perl 访问它



我的网站托管在 ubuntu 上的 Apache 上。我得到了一个JAR文件,其中有两个文件夹以及一些.class和.scc文件。假设 jar 文件名 = myJarfile,此存档中的文件夹 = myFolder,此文件夹中的类 = 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.

管理员告诉我这是类路径问题。我不知道。我的网站使用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文件。它们都没有被命名为"主要"....

我感谢给予我的时间和帮助。

泰。拉吉夫

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

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

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

关于类路径,

我建议你阅读一些关于类路径的文档,如果你还没有的话。如果对最佳变体有疑问,请咨询您的 JAR 文件提供程序以确定。

另请参阅:

  • Java - Jar 找不到包含的库和主类

最新更新