【问题标题】:Run time java jar file with jython exceptions带有 jython 异常的运行时 java jar 文件
【发布时间】:2015-06-11 14:56:33
【问题描述】:

我有一个在 Eclipse 中完美运行的大型应用程序,我为我的应用程序创建了一个可执行的 jar 文件,我的应用程序使用 jython 来定义一些资源。我还创建了`以下 .bat 文件来运行该文件:

    @ echo off 
java -Xms64m -Xmx512m -Xincgc -Dpython.home=jython-2.1 -Dpython.path=jython-2.1/Lib/alice -Djava.library.path=lib/win32;externalLib/win32; -jar MyProg23.jar

执行.bat文件时出现异常,这是该异常的一部分:

java.lang.ExceptionInInitializerError
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Unknown Source)
        at edu.cmu.cs.stage3.alice.authoringtool.JAlice.main(JAlice.java:163)
Caused by: Traceback (innermost last):
  File "C:\MyWork\AliceDev\Alice test\resources\Alice Style.py", line 23, in ?
  File "C:\MyWork\AliceDev\Alice test\resources\common\StandardResources.py", li
ne 181, in ?
AttributeError: java package 'javax' has no attribute 'vecmath'

        at org.python.core.Py.AttributeError(Py.java)
        at org.python.core.PyObject.__getattr__(PyObject.java)
        at org.python.pycode._pyx1.f$0(C:\MyWork\AliceDev\Alice test\resources\c
ommon\StandardResources.py:181)
        at org.python.pycode._pyx1.call_function(C:\MyWork\AliceDev\Alice test\r
esources\common\StandardResources.py)
        at org.python.core.PyTableCode.call(PyTableCode.java)
        at org.python.core.PyCode.call(PyCode.java)
        at org.python.core.Py.runCode(Py.java)
        at org.python.core.__builtin__.execfile_flags(__builtin__.java)
        at org.python.core.__builtin__.execfile(__builtin__.java)
        at org.python.core.__builtin__.execfile(__builtin__.java)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.python.core.PyReflectedFunction.__call__(PyReflectedFunction.java
)
        at org.python.core.PyReflectedFunction.__call__(PyReflectedFunction.java
)
        at org.python.core.PyObject.__call__(PyObject.java)
        at org.python.pycode._pyx0.f$0(C:\MyWork\AliceDev\Alice test\resources\A
lice Style.py:23)
        at org.python.pycode._pyx0.call_function(C:\MyWork\AliceDev\Alice test\r
esources\Alice Style.py)
        at org.python.core.PyTableCode.call(PyTableCode.java)
        at org.python.core.PyCode.call(PyCode.java)
        at org.python.core.Py.runCode(Py.java)
        at org.python.core.__builtin__.execfile_flags(__builtin__.java)
        at org.python.core.__builtin__.execfile(__builtin__.java)
        at edu.cmu.cs.stage3.alice.authoringtool.AuthoringToolResources.loadReso
urcesPy(AuthoringToolResources.java:199)
        at edu.cmu.cs.stage3.alice.authoringtool.AuthoringToolResources.<clinit>
(AuthoringToolResources.java:108)
        ... 3 more

vecmath.jar 文件和其他外部库位于名为 externalLib 的文件夹中,该文件夹位于 Myprog23.jar.bat 文件

如何解决问题,需要设置什么?

【问题讨论】:

  • 您的错误结构表明您在通过 jython 导入 vecmath 时遇到问题。尝试按照这些instructions 安装 jython "globaly"。
  • jython 已经安装了,我把所有的异常都放了,这可能会让它更清楚。 - @lucidgold

标签: batch-file jython executable-jar attributeerror vecmath


【解决方案1】:

我假设您已经正确设置了 CLASSPATH 变量。还假设您已正确安装 JyThon。你真的应该确保在你的应用程序环境之外测试 JyThon hello world。你需要一步一步来,Alice 是一个复杂的系统,所以如果没有确定库的基本结构就很难调试你的问题。

有了这些假设,您可以继续使用 JyThon 文档FAQ

Jython 找不到您的 Java 类,即使它存在于类路径中。

Jython 找不到您的 Java 类,即使它存在于该类中 小路。这显示为 "ImportError: cannot import name xxx" 或 "AttributeError: java package xxx' has no attribute 'yyy'" 当 Jython 作为 Java 扩展安装时会发生这种情况(即,当 jython.jar 安装在 java\jre\lib\ext) 并且你的类是 安装在类路径中。

原因是Java扩展只能看到其他扩展,不能看到其他 在 CLASSPATH 中定义的类或使用 --classpath 选项。

有两种方法可以解决此问题:

  1. 将您的类移动到 java\jre\lib\ext 目录。

  2. 从 java\jre\lib\ext 目录中删除 jython.jar 并将 CLASSPATH 中的 jython.jar 或使用 java --classpath 选项。

【讨论】:

    【解决方案2】:

    您需要将程序中使用的所有 jar 添加到类路径中。因此,在您的情况下,externalLib 目录中存在的所有 jar 都应添加到类路径中。

    要在类路径中添加 jar,您可以参考 Setting multiple jars in java classpath

    【讨论】:

    • 我为导致问题的jar文件添加了classpath,但问题仍然出现。是否有任何其他想法来设置环境以将 javax.vecmath 与 jar 文件一起使用。该项目在eclipse中完美运行,所以我认为问题只是如何在我的机器上设置VM环境以让应用程序与这些外部库一起工作。 @Bhisham
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-20
    • 2014-06-10
    • 2013-01-16
    • 2020-07-27
    • 1970-01-01
    相关资源
    最近更新 更多