在Mac上编译Pylucene:不支持的major.minor版本51.0,但安装了java 1.7

时间:2014-12-16 14:38:32

标签: java python macos lucene pylucene

我的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?或者我错过了其他任何设置吗?

0 个答案:

没有答案