4

我正在开发一个从JAVA 1.6.027执行Jython 2.5.3脚本的应用程序。该脚本只是使用编解码器库打开一个文件,它看起来像这样:

try:
    from codecs import open as codecs_open
except ImportError:
    print 'ERROR', 'Could not import.'

CODECS_LIST = ['latin-1', 'utf-8', 'utf-16', '1250', '1252']

def open_file(filename, mode):
    '''
    DOC
    '''
    for encoding in CODECS_LIST:
        try:
            f = codecs_open(filename, mode, encoding)
            f.read()
            f.close()
            print 'INFO', "File %s supports encoding %s." % (filename.split("\\")[-1], encoding)
            ...
        except:
            ...

当我在Eclipse中执行此脚本调试时,一切正常,但是当我执行调用此脚本的 JAVA 应用程序部分时,我收到此错误:

Exception in thread "main" java.lang.NoClassDefFoundError: Could not initialize class sun.nio.ch.FileChannelImpl
    at java.io.RandomAccessFile.getChannel(RandomAccessFile.java:253)
    at org.python.core.io.FileIO.fromRandomAccessFile(FileIO.java:173)
    at org.python.core.io.FileIO.<init>(FileIO.java:79)
    at org.python.core.io.FileIO.<init>(FileIO.java:57)
    at org.python.core.PyFile.<init>(PyFile.java:135)
    at org.python.core.PyTraceback.getLine(PyTraceback.java:65)
    at org.python.core.PyTraceback.tracebackInfo(PyTraceback.java:38)
    at org.python.core.PyTraceback.dumpStack(PyTraceback.java:109)
    at org.python.core.PyTraceback.dumpStack(PyTraceback.java:120)
    at org.python.core.Py.displayException(Py.java:1080)
    at org.python.core.PySystemState.excepthook(PySystemState.java:1242)
    at org.python.core.PySystemStateFunctions.__call__(PySystemState.java:1421)
    at org.python.core.Py.printException(Py.java:1053)
    at org.python.core.Py.printException(Py.java:1012)
    at org.python.util.jython.run(jython.java:264)
    at org.python.util.jython.main(jython.java:129)

JAVA 应用程序能够执行其他类似的 jython 脚本。我检测到sun.nio.ch.FileChannelImpl 类位于库 rt.jar 中,该库位于/bin/common/文件夹中,并通过jvm.cfg文件包含在我的类路径中:

...    
#LIBRARY PATH
./bin/common;...
...

就像我对其他运行良好的库一样。

我已经被这个问题困扰了几天,所以任何帮助将不胜感激。谢谢

4

2 回答 2

4

问题已通过重新安装Java Runtime Environment得到解决,在我的情况下是版本jre-6u45

于 2013-08-27T15:15:45.593 回答
0

这发生在我身上,因为mysql我安装的包是全局安装的并且需要 root 权限,所以在运行 java 时,我必须包含sudo它才能使其正常工作。

于 2019-12-02T21:34:49.207 回答