【问题标题】:where to put the jar file in apache? and how to access it from perl?将jar文件放在apache的哪里?以及如何从 perl 访问它?
【发布时间】:2012-08-08 01:34:40
【问题描述】:

我的网站托管在 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)

请建议。

泰。 拉吉夫

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

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

然后执行正常:

$ java myFolder.myClass

启动守护进程....

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

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

泰。 拉吉夫

【问题讨论】:

    标签: perl apache jar


    【解决方案1】:

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

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

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

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

    另见:

    【讨论】:

    • 德克萨斯州。我读了那个线程。我不确定:类路径变量在哪里?我该如何设置?我需要在 Apache 中做什么(如果我必须在 apache 配置中做任何事情)才能在每次网络服务器启动时运行它?从 PERL 访问实际上不是问题。当我尝试 -jar 开关时,我得到以下信息:$ java -jar myJarfile.jar Failed to load Main-Class manifest attribute from myJarfile.jar
    猜你喜欢
    • 2020-08-07
    • 2013-08-09
    • 2014-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-29
    • 2012-05-31
    • 2017-08-23
    相关资源
    最近更新 更多