2012-12-13 26 views
9

'u kullanarak OS X'te SWT uygulamasını kırıyor SWT kitaplığını kullanan web başlatıcısı aracılığıyla başlatılan bir uygulamamız var.Java 7, Web Start

Iyi osx ana iş parçacığı çalıştırmak için cc kütüphanesini gerektirdiği bilinmektedir, bu yüzden JNLP bu ilgisi var:

<resources os="Mac"> 
    <j2se version="1.6+" java-vm-args="-XstartOnFirstThread"/> 
    <jar href="swt-mac64.jar"/> 
</resources> 

biz Java 7 (1.7.0_10) yükseltilmiş beri ise bunu webstart, başladığı java işlemine "-XstartOnFirstThread" iletmez.

'ps' dan java işleminin "-XstartOnFirstThread" seçeneğini almadığını görebiliyorum.

Webstart'ın önceki davranışlarına geri dönmek için nasıl kullanılacağını bilen var mı?

Saygılarımızla, Gord. Başka bir kişiden bu yazı dayalı bir Java 7 hata bile olsa Java 7 ve merakla de bu görmeye oldum

Java Web Start 10.10.2.18 
Using JRE version 1.7.0_10-b18 Java HotSpot(TM) 64-Bit Server VM 
User home directory = /Users/shier 
---------------------------------------------------- 
c: clear console window 
f: finalize objects on finalization queue 
g: garbage collect 
h: display this help message 
m: print memory usage 
o: trigger logging 
p: reload proxy configuration 
q: hide console 
r: reload policy configuration 
s: dump system and deployment properties 
t: dump thread list 
v: dump thread stack 
0-5: set trace level to <n> 
---------------------------------------------------- 
    Match: beginTraversal 
Match: digest selected JREDesc: JREDesc[version 1.6+, heap=-1--1, args=-XstartOnFirstThread, href=null, sel=false, null, null], JREInfo: JREInfo for index 0: 
    platform is: 1.7 
    product is: 1.7.0_10 
    location is: http://java.sun.com/products/autodl/j2se 
    path is: /Library/Internet Plug-ins/JavaAppletPlugin.plugin/Contents/Home/bin/java 
    args is: null 
    native platform is: Mac OS X, x86_64 [ x86_64, 64bit ] 
    JavaFX runtime is: JavaFX 2.2.4 found at /Library/Internet Plug-ins/JavaAppletPlugin.plugin/Contents/Home/ 
    enabled is: true 
    registered is: true 
    system is: true 

    Match: ignoring maxHeap: -1 
    Match: ignoring InitHeap: -1 
    Match: digesting vmargs: -XstartOnFirstThread 
    Match: digested vmargs: [JVMParameters: isSecure: false, args: -XstartOnFirstThread] 
    Match: JVM args after accumulation: [JVMParameters: isSecure: false, args: -XstartOnFirstThread] 
    Match: digest LaunchDesc: http://htxuat.example.com/broker/broker-XX.jnlp 
    Match: digest properties: [] 
    Match: JVM args: [JVMParameters: isSecure: false, args: -XstartOnFirstThread] 
    Match: endTraversal .. 
    Match: JVM args final: -XstartOnFirstThread 
    Match: Running JREInfo Version match: 1.7.0.10 == 1.7.0.10 
    Match: Running JVM args match the secure subset: have:<"-Djnlp.application.href=\"http://htxuat.example.com/broker/broker-XX.jnlp \""> satisfy want:<-XstartOnFirstThread> 
Dec 13, 2012 10:19:49 AM com.example.log.JavaUtilLogger infoImpl 
INFO: Available host [tcp:htxuat.example.com:49200] 
Dec 13, 2012 10:19:49 AM com.example.log.JavaUtilLogger infoImpl 
INFO: Available host [ssl:htxuat.example.com:49301] 
Dec 13, 2012 10:19:49 AM com.example.log.JavaUtilLogger infoImpl 
INFO: Will try the first address [tcp:htxuat.example.com:49200] 
Dec 13, 2012 10:19:49 AM com.example.log.JavaUtilLogger infoImpl 
INFO: Using host [tcp:htxuat.example.com:49200] 
Dec 13, 2012 10:19:49 AM com.example.log.JavaUtilLogger infoImpl 
INFO: Don't forget to change back the logging, this is only temporary 
Dec 13, 2012 10:19:49 AM com.example.log.JavaUtilLogger infoImpl 
INFO: Using library /Users/shier/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:. 
Dec 13, 2012 10:19:49 AM com.example.log.JavaUtilLogger infoImpl 
INFO: Registering [com.example.client.ClientController] 
JNLPClassLoader: Finding library libswt-cocoa-3738.dylib 
JNLPClassLoader: Finding library libswt-cocoa.dylib 
JNLPClassLoader: Finding library libswt-pi-cocoa-3738.dylib 
JNLPClassLoader: Finding library libswt-pi-cocoa.dylib 
***WARNING: Display must be created on main thread due to Cocoa restrictions. 
Dec 13, 2012 10:19:50 AM com.example.log.JavaUtilLogger errorImpl 
SEVERE: Problem 
org.eclipse.swt.SWTException: Invalid thread access 
    at org.eclipse.swt.SWT.error(SWT.java:4282) 
    at org.eclipse.swt.SWT.error(SWT.java:4197) 
    at org.eclipse.swt.SWT.error(SWT.java:4168) 
    at org.eclipse.swt.widgets.Display.error(Display.java:1065) 
    at org.eclipse.swt.widgets.Display.createDisplay(Display.java:822) 
    at org.eclipse.swt.widgets.Display.create(Display.java:805) 
    at org.eclipse.swt.graphics.Device.<init>(Device.java:130) 
    at org.eclipse.swt.widgets.Display.<init>(Display.java:696) 
    at org.eclipse.swt.widgets.Display.<init>(Display.java:687) 
    at org.eclipse.swt.widgets.Display.getDefault(Display.java:1383) 
    at org.eclipse.swt.widgets.Shell.<init>(Shell.java:270) 
    at org.eclipse.swt.widgets.Shell.<init>(Shell.java:263) 
    at com.example.swt.ShellViewParent.attach(ShellViewParent.java:124) 
    at com.example.swt.MultipleParents.init(MultipleParents.java:55) 
    at com.example.client.mvc.ViewController.setViewParents(ViewController.java:320) 
    at com.example.client.mvc.ViewController.setViewParents(ViewController.java:287) 
    at com.example.client.mvc.ViewController.setViewParents(ViewController.java:278) 
    at com.example.client.gui.prefs.PreferencesViewController.<init>(PreferencesViewController.java:53) 
    at com.example.client.ClientController.init(ClientController.java:353) 
    at com.example.mvc.Controller.register(Controller.java:51) 
    at com.example.client.Application.loadComponents(Application.java:153) 
    at com.example.client.Application.start(Application.java:139) 
    at com.example.client.Application.main(Application.java:166) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:601) 
    at com.sun.javaws.Launcher.executeApplication(Unknown Source) 
    at com.sun.javaws.Launcher.executeMainClass(Unknown Source) 
    at com.sun.javaws.Launcher.doLaunchApp(Unknown Source) 
    at com.sun.javaws.Launcher.run(Unknown Source) 
    at java.lang.Thread.run(Thread.java:722) 

org.eclipse.swt.SWTException: Invalid thread access 
    at org.eclipse.swt.SWT.error(SWT.java:4282) 
    at org.eclipse.swt.SWT.error(SWT.java:4197) 
    at org.eclipse.swt.SWT.error(SWT.java:4168) 
    at org.eclipse.swt.widgets.Display.error(Display.java:1065) 
    at org.eclipse.swt.widgets.Display.createDisplay(Display.java:822) 
    at org.eclipse.swt.widgets.Display.create(Display.java:805) 
    at org.eclipse.swt.graphics.Device.<init>(Device.java:130) 
    at org.eclipse.swt.widgets.Display.<init>(Display.java:696) 
    at org.eclipse.swt.widgets.Display.<init>(Display.java:687) 
    at org.eclipse.swt.widgets.Display.getDefault(Display.java:1383) 
    at org.eclipse.swt.widgets.Shell.<init>(Shell.java:270) 
    at org.eclipse.swt.widgets.Shell.<init>(Shell.java:263) 
    at com.example.swt.ShellViewParent.attach(ShellViewParent.java:124) 
    at com.example.swt.MultipleParents.init(MultipleParents.java:55) 
    at com.example.client.mvc.ViewController.setViewParents(ViewController.java:320) 
    at com.example.client.mvc.ViewController.setViewParents(ViewController.java:287) 
    at com.example.client.mvc.ViewController.setViewParents(ViewController.java:278) 
    at com.example.client.gui.prefs.PreferencesViewController.<init>(PreferencesViewController.java:53) 
    at com.example.client.ClientController.init(ClientController.java:353) 
    at com.example.mvc.Controller.register(Controller.java:51) 
    at com.example.client.Application.loadComponents(Application.java:153) 
    at com.example.client.Application.start(Application.java:139) 
    at com.example.client.Application.main(Application.java:166) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:601) 
    at com.sun.javaws.Launcher.executeApplication(Unknown Source) 
    at com.sun.javaws.Launcher.executeMainClass(Unknown Source) 
    at com.sun.javaws.Launcher.doLaunchApp(Unknown Source) 
    at com.sun.javaws.Launcher.run(Unknown Source) 
    at java.lang.Thread.run(Thread.java:722) 
+0

Apple'ın -XstartOnFirstThread seçeneğine izin vermek için java/javaws sürümlerini değiştirdiğini düşünüyorum. Bence Oracle, Mac üzerinde java'nın dağıtımını üstlendikleri için bu fazladan adım atmıyor. –

+0

JNLP, "tüm izinler" bildiriyor mu? Eminim istek başka türlü göz ardı edilecekti. [JaNeLA] (http://pscode.org/janela/) kullanarak JNLP'yi kontrol ettiğinizden emin olun. –

cevap

1

(devam ettim ve:

Bu

Webstart günlüğü gösterir budur Java hata veri tabanından arama yapmadığım için bir hata raporu gönderdim.): http://www.java.net/forum/topic/jdk/java-se/webstart-os-x-xstartonfirstthread

Bulduğum geçici çözüm, Apple'ın sağladığı Java 6'dan javaws'ı kullanmaktı. komut satırından: /System/Library/Java/Support/Deploy.bundle/Contents/MacOS/javaws myjnlp.jnlp