我有.jar文件,它在运行时读取一个.dlib库,我用GCC编译器在OSX中编译了这个库。
应用程序在OSX 10.6.8上运行时没有任何问题。
Java版本:
java版本"1.6.0_33"java(TM)SE运行时环境(内部版本1.6.0_33-b10-424-10M3720)Java HotSpot(TM)64位服务器虚拟机(版本20.8-b01-424,混合模式)
GCC版本:
i686-apple-darwin11-llvm-gcc-4.2(gcc)4.2.1(基于苹果股份有限公司。版本5658)(LLVM版本2336.1.00)
我使用64位Java和库,.jar需要这些库是为x8_64编译的。所以,在雪豹上,一切都很顺利。
我现在将我的应用程序切换到OSX 10.7.4。在那里我尝试了两个不同的Java版本:
第一个Java版本(与Snow Leopard相同):
java版本"1.6.0_33"java(TM)SE运行时环境(内部版本1.6.0_33-b10-424-10M3720)Java HotSpot(TM)64位服务器虚拟机(版本20.8-b01-424,混合模式)
第二个Java版本(今天更新):
java版本"1.6.0_35"java(TM)SE运行时环境(内部版本1.6.0_35-b10-428-11M3811)Java HotSpot(TM)64位服务器虚拟机(内部版本20.10-b01-428,混合模式)
GCC版本:
i686-apple-darwin11-llvm-gcc-4.2(gcc)4.2.1(基于苹果股份有限公司。版本5658)(LLVM版本2336.9.00)
我第一次尝试使用在Snow Leopard上编译的.dlib运行应用程序,结果出现了以下错误:
位置0x0 rip=0x7fff894aa697的无效内存访问分段故障:11
还有没有导致应用程序崩溃的新线路,但它们没有出现在雪豹:上
java[1366] <Error>: CGContextGetCTM: invalid context 0x0
java[1366] <Error>: CGContextSetBaseCTM: invalid context 0x0
java[1366] <Error>: CGContextGetCTM: invalid context 0x0
java[1366] <Error>: CGContextSetBaseCTM: invalid context 0x0
在这次崩溃之后,我试图在Lion上用GCC重新编译dependency.dlib,但没有任何改变。我仍然得到分段错误:11错误。
我在网上读到了这个错误,据我所知,它经常出现在Lion上,因为Java更新可能搞砸了一些东西,但由于我对Java不太熟悉,有人遇到过这些问题吗?如果有,有办法解决这个问题吗?
非常感谢。
[edit#1:尝试在OSX 10.7.4]上使用Java 7
当用Java 7运行.jar时,再次发生崩溃,下面是错误报告:
#
# A fatal error has been detected by the Java Runtime Environment:
#
# SIGSEGV (0xb) at pc=0x00007fff894aa697, pid=1471, tid=31503
#
# JRE version: 7.0_07-b10
# Java VM: Java HotSpot(TM) 64-Bit Server VM (23.3-b01 mixed mode bsd-amd64 compressed oops)
# Problematic frame:
# C [CoreFoundation+0x2a697] CFSetGetValue+0x17
#
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#
# An error report file with more information is saved as:
# /Users/username/Desktop/executable/hs_err_pid1471.log
#
# If you would like to submit a bug report, please visit:
# http://bugreport.sun.com/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#
Abort trap: 6
使用Mac OS X 10.8.2和Java 6安装,问题消失了。我读到关于这个问题的文章,发现Java 6和Mac OS X 10.7.4存在一些问题。就我而言,我只是在10.8.2上等待测试应用程序,以检查它是否只在10.7.4上产生这些错误,而这些错误似乎只在10.74上发生。
通过操作系统升级,问题得到了解决,这对我来说已经足够好了。
致以最良好的问候。
我今天在OS X 10.8.2上遇到了这个问题,所以等待更新没有帮助。我能够通过重新安装Java for OS X来修复它。
我没有试着卸载这个糟糕的java,我只是重新下载了它并安装在上面。这是我安装的版本:
Java For OS X 10.8
如果你不在10.8(Mountain Lion)上,那么你可能需要一个不同的下载。它可以在同一个网站上找到。希望这能帮助到别人。