2012-08-07 98 views
1

我的网站托管在Ubuntu上的Apache上。我得到了一个JAR文件,里面有两个文件夹和一些.class和.scc文件。让我们说jar文件名= myJarfile,这个档案里面的文件夹= myFolder,并且这个文件夹里面的Class = myClass。在哪里把jar文件放在apache中?以及如何从Perl访问它?

我被告知要运行的类是这样的:

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) 

PI建议。

ty。 拉杰夫

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

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

然后执行罚款:

$ java myFolder.myClass 

启动守护程序。 ...

但说实话,我不知道我是什么在这里继续。这个.jar文件有两个文件夹:myFolder和一个META-INF。 myFolder有一堆.class文件和一个.scc文件。没有一个被命名为“主”....

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

ty。 Rajeev

回答

0

将“-jar”标志添加到“java”的实验。

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

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

关于Classpath,我建议你阅读一些documentation for Classpath,如果你还没有。如果对最佳版本有疑问,请询问您的JAR文件提供程序。

另见:

+0

的Tx。我读了这个线程。我不确定:classpath变量在哪里?我如何设置它?我需要在Apache中做什么(如果我必须在Apache配置中执行任何操作)才能在每次启动Web服务器时运行此操作?从PERL访问实际上不是问题。当我试图罐子开关,我得到如下:'$ Java的罐子myJarFile.jar中 无法加载从 myJarfile.jar' – rajeev 2012-08-07 17:01:36

+0

我已经更新了我的回答更多的细节主类清单属性。 – 2012-08-07 17:29:42

+0

该链接是有帮助的。 TY。 – rajeev 2012-08-07 17:58:38

相关问题