2010-09-06 88 views
2

我与JPype有一个正确的老噩梦。我有我的开发环境在Windows上,所以尝试在那里安装它没有运气。然后我尝试了Ubunto也没有运气。我现在有点绝望了。我使用的是Mingw32,因为我尝试安装VS2008,但它告诉我必须安装XP SP2,但我在Vista上。我试过VS2010,但没有运气,我得到'错误:无法找到vcvarsall.bat'错误。无论如何,我现在在Mingw32JPype编译问题

最终我试图使用Neo4j和Python,因此我需要使用JPype。我已经在MySQL网络上发现了许多关于这个问题的参考,但他们并没有帮助我使用JPype。

如果我可以修复unix或windows,我可以得到这样的帮助将会非常感激。

这里的版本..

Windows系统:Vista的64 的Python:2.6 编译MINGW32:最新版本 Jpype:0.5.4.1 Java的信息: Java版本 “1.6.0_13” 的Java(TM) SE运行时环境(建立1.6.0_13-B03) 的HotSpot的Java(TM)64位服务器VM(建11.3-B02,混合模式)

我运行:

蟒蛇的setup.py安装--comp iler = wingw32

并获得以下输出。

选择Windows配置文件 运行安装 运行建立运行build_py 运行build_ext 建设 '_jpype' 扩展 Ç :\ MinGW的\ BIN \ gcc.exe -mno-cygwin的-mdll -O -Wall -DWIN32 = 1“-IC:\ Program Files(x86)\ Java \ jdk1.6.0_21/include”“-IC:\ Program Files(x86)\ Java \ jdk1.6.0_21/include/win32”-Isrc/native/common/include -Isrc/native/python/include -Ic:\ Python26 \ include -Ic:\ Python26 \ PC -c src/native/common/jp_array.cpp -o build \ temp.win32-2.6 \ Release \ src \ native \ common \ jp_array.o/EHsc src/native/common/jp_array.cpp:在成员函数'void JPArray :: setRange(int,int,std :: vector &)'中: sr c/native/common/jp_array.cpp:56:13:警告:在有符号和无符号整数表达式之间进行比较 src/native/common/jp_array.cpp:68:4:警告:不推荐将字符串常量转换为'char *' src/native/common/jp_array.cpp:在成员函数'void JPArray :: setItem(int,HostRef *)'中: src/native/common/jp_array.cpp:80:3:警告:不推荐使用字符串常量到 '字符*' GCC:/ EHSC:没有这样的文件或目录 错误:命令 'GCC' 与退出状态失败1

所以在UNIX Ubunto的问题如下:

Java版本:1.6 .0_18 JPype:0.5.4.1 的Python:2.6

Java是在路径和我做的apt-get安装集结要领刚才那么有最新的GCC等

我不会糊所有的输出,因为它是巨大的。如此多的错误就像我错过了Java或类似的安装,但我没有。打字java带我进入上面的版本。这是开始:

运行安装 运行建立运行build_py 运行build_ext 建设 '_jpype' 扩展 GCC -pthread -fno严格走样-DNDEBUG -g -fwrapv -02 -Wall -Wstrict的原型 -fPIC -I/usr/lib/jvm/java-1.5.0-sun-1.5.0.08/include -I/usr/lib/jvm/java-1.5.0-sun-1.5.0.08/include/linux -Isrc/native/common/include -Isrc/native/python/include -I/usr/include/python2.6 -c src/native/common/jp_javaenv_autogen.cpp -o build/temp.linux-i686-2.6/src/native /common/jp_javaenv_autogen.o cc1plus:警告:命令行选项“-Wstrict的原型”是有效的阿达/ C/ObjC但不能用于C++ 在文件中包含从SRC /天然/普通/ jp_javaenv_auto gen.cpp:21: src/native/common/include/jpype.h:45:17:error:jni.h:没有这样的文件或目录 从src/native/common/jp_javaenv_autogen.cpp包含的文件中:21 : src/native/common/include/jpype.h:77:error:ISO C++禁止声明没有类型的'jchar' src/native/common/include/jpype.h:77:error:expected','或之前 '...' '' 令牌 SRC /天然的/普通/包含/ jpype.h:82:错误:ISO C++禁止 'jchar' 的声明无类型 SRC /天然的/普通/包含/ jpype。 H:82:错误:预期 ';' 前 '' 令牌 SRC /天然的/普通/包含/ jpype.h:86:错误:ISO C++禁止 'jchar' 的声明无类型 SRC /天然/普通/ include/jpype.h:86:错误:预期 ';' 前 '&' 令牌 SRC /天然的/普通/包含/ jpype.h:88:错误:预期 ';' 之前 '私人' SRC /天然的/普通/包含/ jpype.h:89:错误:ISO C++禁止声明没有类型的'jchar' src/native/common/include/jpype.h:89:error:expected';''*'token 从src/native/common /包括/ jpype.h:96, 从SRC /天然的/普通/ jp_javaenv_autogen.cpp:21:

这是结束:

SRC /天然的/普通/包含/ jp_monitor.h:27:错误:'jobject'不命名类型 src /天然的/普通/ jp_javaenv_autogen.cpp:30:错误: 'jbyte' 没有指定类型 SRC /天然的/普通/ jp_javaenv_autogen.cpp:38:错误: 'jbyte' 没有指定类型 SRC /天然/普通/ jp_javaenv_autogen.cpp:45:error:变量或字段'SetStaticByteField'声明为void src/native/common/jp_javaenv_autogen.cpp:45:error:'jclass'未在此范围内声明 src/native/common/jp_javaenv_autogen.cpp :45:error:'jfieldID'未在此范围内声明 src/native/common/jp_javaenv_autogen.cpp:45:错误:'jbyte'未在此范围内声明 错误:命令'gcc'失败,退出状态为1

回答

1
gcc: /EHsc: No such file or directory error: command 'gcc' failed with exit status 1 

EHsc是特定于Microsoft工具链的编译器开关。这就是你得到这个错误的原因。你在某处混合工具链,不知何故 - 也许是以前尝试的剩余文件?我将不得不亲自下载JPype来验证使用mingw32进行构建。

你知道你可以下载Python 2.6和Pytho 2.5的JPype二进制发行版吗?

至于你的* NIX构建,你缺少Java/JNI开发头文件,所以C的Java类型不可用,编译器无法识别它们。安装dev软件包并确保你的工具链能够找到它们。

1

编辑Setup.py并删除/ EHsc选项。

3

我在Linux上有同样的错误。它的工作对我来说只是执行

看setup.py线45
export JAVA_HOME=/usr/lib/[*your_java_folder*] 

def setupLinux(self):   
self.javaHome = os.getenv("JAVA_HOME") 
if self.javaHome is None : 
    self.javaHome = '/usr/lib/jvm/java-1.5.0-sun-1.5.0.08' # Ubuntu linux