2015-02-27 7 views
0

Я разработал приложение на базе Java и создаю приложение для настольных компьютеров. Как вы знаете, когда вы создаете пакет для Mac, вам нужно встроить полный JDK (в моем случае 1.8) в пакет, поэтому не имеет значения, установлен ли целевой или не установлена ​​Java, к нему добавляется приложение.Java-приложение для Mac не работает в старых MacOSX

Все работает отлично в MacOSX 10.10 и 10.9 ... (я не тестировал в 10.7 или 10.8).

Но когда я бегу в 10.6.8 MacOSX Java врезается ... в консоли я вижу это:

Process:   JavaAppLauncher [354] 
Path:   /Applications/myapp.app/Contents/MacOS/JavaAppLauncher 
Identifier:  com.myapp.desktop 
Version:   1.0.8 (1) 
Code Type:  X86-64 (Native) 
Parent Process: launchd [130] 

Date/Time:  2015-02-27 16:58:14.384 +0100 
OS Version:  Mac OS X 10.6.8 (10K549) 
Report Version: 6 

Exception Type: EXC_BREAKPOINT (SIGTRAP) 
Exception Codes: 0x0000000000000002, 0x0000000000000000 
Crashed Thread: 3 

Thread 0: Dispatch queue: com.apple.main-thread 
0 libSystem.B.dylib    0x00007fff8a4acd7a mach_msg_trap + 10 
1 libSystem.B.dylib    0x00007fff8a4ad3ed mach_msg + 59 
2 com.apple.CoreFoundation  0x00007fff848a2902 __CFRunLoopRun + 1698 
3 com.apple.CoreFoundation  0x00007fff848a1d8f CFRunLoopRunSpecific + 575 
4 libjli.dylib     0x0000000100038b34 CreateExecutionEnvironment + 871 
5 libjli.dylib     0x0000000100034ac4 JLI_Launch + 1952 
6 com.myapp.desktop   0x00000001d7448990 launch + 5696 
7 com.myapp.desktop   0x00000001d7447136 main + 102 
8 com.myapp.desktop   0x00000001d74470c4 start + 52 

Thread 1: Dispatch queue: com.apple.libdispatch-manager 
0 libSystem.B.dylib    0x00007fff8a4c5c0a kevent + 10 
1 libSystem.B.dylib    0x00007fff8a4c7add _dispatch_mgr_invoke + 154 
2 libSystem.B.dylib    0x00007fff8a4c77b4 _dispatch_queue_invoke + 185 
3 libSystem.B.dylib    0x00007fff8a4c72de _dispatch_worker_thread2 + 252 
4 libSystem.B.dylib    0x00007fff8a4c6c08 _pthread_wqthread + 353 
5 libSystem.B.dylib    0x00007fff8a4c6aa5 start_wqthread + 13 

Thread 2: 
0 libSystem.B.dylib    0x00007fff8a4e7a6a __semwait_signal + 10 
1 libSystem.B.dylib    0x00007fff8a50e896 pthread_join + 844 
2 libjli.dylib     0x0000000100038134 ContinueInNewThread0 + 102 
3 libjli.dylib     0x0000000100035738 ContinueInNewThread + 201 
4 libjli.dylib     0x0000000100037f09 JVMInit + 315 
5 libjli.dylib     0x00000001000354b6 JLI_Launch + 4498 
6 com.myapp.desktop   0x00000001d7448990 launch + 5696 
7 com.myapp.desktop   0x00000001d7447136 main + 102 
8 libjli.dylib     0x00000001000387c6 apple_main + 92 
9 libSystem.B.dylib    0x00007fff8a4e5fd6 _pthread_start + 331 
10 libSystem.B.dylib    0x00007fff8a4e5e89 thread_start + 13 

Thread 3 Crashed: 
0 com.apple.CoreFoundation  0x00007fff848d98a1 ___forwarding___ + 673 
1 com.apple.CoreFoundation  0x00007fff848d5a38 _CF_forwarding_prep_0 + 232 
2 libobjc.A.dylib     0x00007fff89347325 _class_initialize + 384 
3 libobjc.A.dylib     0x00007fff8935552b prepareForMethodLookup + 234 
4 libobjc.A.dylib     0x00007fff8934dcb9 lookUpMethod + 73 
5 libobjc.A.dylib     0x00007fff89345faa objc_msgSend + 198 
6 libawt_lwawt.dylib    0x0000000116528ca4 JNI_OnLoad + 412 
7 libjava.dylib     0x00000001004c7c49 Java_java_lang_ClassLoader_00024NativeLibrary_load + 208 
8 ???        0x00000001027474d4 0 + 4336153812 
9 ???        0x000000010273b98d 0 + 4336105869 
10 ???        0x000000010273b160 0 + 4336103776 
11 ???        0x000000010273b98d 0 + 4336105869 
12 ???        0x000000010273b98d 0 + 4336105869 
13 ???        0x00000001027344e7 0 + 4336076007 
14 libjvm.dylib     0x0000000101ad4442 JavaCalls::call_helper(JavaValue*, methodHandle*, JavaCallArguments*, Thread*) + 1710 
15 libjvm.dylib     0x0000000101b094bb jni_invoke_static(JNIEnv_*, JavaValue*, _jobject*, JNICallType, _jmethodID*, JNI_ArgumentPusher*, Thread*) + 447 
16 libjvm.dylib     0x0000000101b027ed jni_CallStaticVoidMethodV + 232 
17 libjava.dylib     0x00000001004d49cb JNU_CallStaticMethodByName + 282 
18 libawt.dylib     0x00000001163bb337 AWT_OnLoad + 547 
19 libawt.dylib     0x00000001163bb384 JNI_OnLoad + 9 
20 libjava.dylib     0x00000001004c7c49 Java_java_lang_ClassLoader_00024NativeLibrary_load + 208 
21 ???        0x00000001027474d4 0 + 4336153812 
22 ???        0x000000010273b98d 0 + 4336105869 
23 ???        0x000000010273b160 0 + 4336103776 
24 ???        0x000000010273b98d 0 + 4336105869 
25 ???        0x000000010273b98d 0 + 4336105869 
26 ???        0x000000010273b98d 0 + 4336105869 
27 ???        0x000000010273b710 0 + 4336105232 
28 ???        0x00000001027344e7 0 + 4336076007 
29 libjvm.dylib     0x0000000101ad4442 JavaCalls::call_helper(JavaValue*, methodHandle*, JavaCallArguments*, Thread*) + 1710 
30 libjvm.dylib     0x0000000101b2ade2 JVM_DoPrivileged + 1208 
31 ???        0x00000001027474d4 0 + 4336153812 
32 ???        0x000000010273b710 0 + 4336105232 
33 ???        0x000000010273b98d 0 + 4336105869 
34 ???        0x00000001027344e7 0 + 4336076007 
35 libjvm.dylib     0x0000000101ad4442 JavaCalls::call_helper(JavaValue*, methodHandle*, JavaCallArguments*, Thread*) + 1710 
36 libjvm.dylib     0x0000000101aa92b5 InstanceKlass::call_class_initializer_impl(instanceKlassHandle, Thread*) + 191 
37 libjvm.dylib     0x0000000101aaa797 InstanceKlass::initialize_impl(instanceKlassHandle, Thread*) + 1479 
38 libjvm.dylib     0x0000000101aaaa19 InstanceKlass::initialize(Thread*) + 61 
39 libjvm.dylib     0x0000000101ba674a LinkResolver::resolve_static_call(CallInfo&, KlassHandle&, Symbol*, Symbol*, KlassHandle, bool, bool, Thread*) + 156 
40 libjvm.dylib     0x0000000101ba695e LinkResolver::resolve_invokestatic(CallInfo&, constantPoolHandle, int, Thread*) + 258 
41 libjvm.dylib     0x0000000101ba6a1f LinkResolver::resolve_invoke(CallInfo&, Handle, constantPoolHandle, int, Bytecodes::Code, Thread*) + 179 
42 libjvm.dylib     0x0000000101ace819 InterpreterRuntime::resolve_invoke(JavaThread*, Bytecodes::Code) + 881 
43 ???        0x00000001027533ba 0 + 4336202682 
44 ???        0x000000010273b98d 0 + 4336105869 
45 ???        0x000000010273b710 0 + 4336105232 
46 ???        0x000000010273b7e4 0 + 4336105444 
47 ???        0x000000010273b710 0 + 4336105232 
48 ???        0x000000010273b98d 0 + 4336105869 
49 ???        0x00000001027344e7 0 + 4336076007 
50 libjvm.dylib     0x0000000101ad4442 JavaCalls::call_helper(JavaValue*, methodHandle*, JavaCallArguments*, Thread*) + 1710 
51 libjvm.dylib     0x0000000101b094bb jni_invoke_static(JNIEnv_*, JavaValue*, _jobject*, JNICallType, _jmethodID*, JNI_ArgumentPusher*, Thread*) + 447 
52 libjvm.dylib     0x0000000101b026b5 jni_CallStaticVoidMethod + 349 
53 libjli.dylib     0x00000001000360ea JavaMain + 2456 
54 libSystem.B.dylib    0x00007fff8a4e5fd6 _pthread_start + 331 
55 libSystem.B.dylib    0x00007fff8a4e5e89 thread_start + 13 

Любые идеи?

+2

Прочитайте [Руководство по установке для Java 8] (http://docs.oracle.com/javase/8/docs/technotes/guides/install/mac_jdk.html), в котором сказано довольно четко: ** Любые на базе Intel компьютер под управлением ОС X 10.8 (Горный лев) или позже. **. поэтому, по предположению, он не будет работать над этим более старым выпуском, поскольку он использует элементы времени выполнения для OSX, которые присутствуют только в этой версии или новее. – Petesh

ответ

2

Для JRE/JDK 8 требуется OS X 10.8 (Mountain Lion) или выше. http://docs.oracle.com/javase/8/docs/technotes/guides/install/mac_jre.html#A1098497

Для JRE/JDK 7 требуется OS X 10.7 (Lion) или выше.

Что я обычно делаю, это создать вторую версию приложения для целевой JRE 6, которая включена в систему (или автоматически загружается при необходимости) до OS X 10.7. Я не нацелен на JRE 8, а просто нацелен на JRE 7, поэтому вам нужно иметь две версии приложения, чтобы охватить подавляющее большинство пользователей OS X.

+0

В Windows, используя InnoSetup, я могу загрузить на лету Java в случае, если это не в системе ... Может ли это быть сделано в MacOSX, а также с любым программным обеспечением? Я теперь использую Ant для создания из jar в .app, а затем используя DMG Canvas для сборки из .app в .dmg – FlamingMoe

+0

Хорошо, мой ответ здесь ;-) http://stackoverflow.com/questions/21568826/how -в-получить ос-х-к-автоматически установить в Java-7-на-App-запуск-вместо-оф-Java-6 – FlamingMoe

 Смежные вопросы

  • Нет связанных вопросов^_^