将jar文件放在apache中的位置?以及如何从perl访问它?

时间:2012-08-07 15:49:57

标签: perl apache jar

我的网站托管在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。 拉杰夫

1 个答案:

答案 0 :(得分:0)

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

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

就从Perl访问它而言,您需要从提供它的人那里获取文档。我希望它可以在端口上运行,也可以创建一个可以连接的套接字。在任何一种情况下,它都是Java应用程序并不重要。 Perl用于连接端口或套接字的标准方法将适用。

关于Classpath,如果你还没有,我建议你阅读一些documentation for Classpath。如果对最佳变体有疑问,请询问您的JAR文件提供商是否确定。

另见: