我的 Mac 上有 Python 2.6(32 位)和 java 1.7。我使用 make 命令在我的 Mac 10.8.5 上编译 pylucene 2.9.4。发生错误:不支持的major.minor 版本51.0。喜欢:
Exception in thread "main" java.lang.UnsupportedClassVersionError: org/apache/pylucene/analysis/PythonTokenizer : Unsupported major.minor version 51.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:637)
at java.lang.ClassLoader.defineClass(ClassLoader.java:621)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
While loading org/apache/pylucene/analysis/PythonTokenizer
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/runpy.py", line 122, in _run_module_as_main
"__main__", fname, loader, pkg_name)
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/runpy.py", line 34, in _run_code
exec code in run_globals
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/jcc/__main__.py", line 98, in <module>
cpp.jcc(sys.argv)
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/jcc/cpp.py", line 496, in jcc
cls = findClass(className.replace('.', '/'))
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/jcc/cpp.py", line 73, in findClass
cls = _findClass(className)
jcc.cpp.JavaError
make: *** [compile] Error 255
我搜索这个错误。大多数答案说这是一个不匹配的问题。这是因为有些类是在较高的 java 版本上编译的,但我想在较低的 java 版本上运行它。我使用python 2.6,我检查了java版本,它是java 1.7。喜欢:
joekaojoekaoMac-mini:pylucene-2.9.4-1 joekaojoekao-mini$ java -version
java version "1.7.0_71"
Java(TM) SE Runtime Environment (build 1.7.0_71-b14)
Java HotSpot(TM) 64-Bit Server VM (build 24.71-b01, mixed mode)
我还打开导致二进制格式错误的 PythonTokenizer.class。它是在 java 1.7 中编译的,因为它的编号是 x0000 0033。它的第一行如下所示:
cafe babe 0000 0033 001d 00a0 0500 1609
但是在pylucene的makefile中,推荐使用java 1.6。所以我很困惑为什么它要求我使用java 1.6来编译pylucene但是它使用的类文件(PythonTokenizer.class)是由java 1.7编译的。
# Mac OS X 10.6 (64-bit Python 2.6, Java 1.6)
PREFIX_PYTHON=/System/Library/Frameworks/Python.framework/Versions/2.6
ANT=ant
PYTHON=$(PREFIX_PYTHON)/bin/python
JCC=$(PYTHON) -m jcc.__main__ --shared --arch x86_64
NUM_FILES=2
那么我应该使用 java 1.6 还是 java 1.7 呢?还是我错过了其他任何设置?