Hy там,
Я разработал приложение, которое должно запускаться через javaws, само приложение протестировано для работы на Linux (Ubuntu 10.04 LTS), Windows 7 и Mac OS.Он использует SWT и работает на всех этих платформах без проблем, если он запускается локально.
после некоторых трудностей приложение теперь хорошо запускается на машинах Linux и Windows со всеми архитектурами, если бы не Mac!
Я знаю, что для запуска приложения swt под macOS нужно указать java-vm XstartOnFirstThread
, а для javaws файлу jnlp нужен следующий тег ресурса:
<resources os="Mac">
<j2se version="1.5+" javaws-vm-args="-XstartOnFirstThread" />
<nativelib href="swt-3.6.2-cocoa-macosx-x86_64.jar" />
<jar href="swt-3.6.2-cocoa-macosx-x86_64.jar" />
</resources>
как обсуждено в этом вопросе У macOS могут быть проблемы с SWT и определением j2se="xy"
, поэтому я попробовал его с конкретным, ни с одним (даже с глобальным) и с "общим" (Например: j2se="1.5+"
).
Я подозреваю, что аргумент javaws-vm-args="-XstartOnFirstThread"
или java-vm-args="-XstartOnFirstThread"
(нашел этот аргумент с и без части "ws" в интернете и попробовал оба) не передан javawsпотому что сам jar работает совершенно отлично, когда выполняется локально на Mac.
Актуальная проблема сейчас заключается в том, что с каждой возможной комбинацией аргументов приложениеИон всегда выходит со следующим исключением:
org.eclipse.swt.SWTException: Invalid thread access
at org.eclipse.swt.SWT.error(Unknown Source)
at org.eclipse.swt.SWT.error(Unknown Source)
at org.eclipse.swt.SWT.error(Unknown Source)
at org.eclipse.swt.widgets.Display.error(Unknown Source)
at org.eclipse.swt.widgets.Display.createDisplay(Unknown Source)
at org.eclipse.swt.widgets.Display.create(Unknown Source)
at org.eclipse.swt.graphics.Device.<init>(Unknown Source)
at org.eclipse.swt.widgets.Display.<init>(Unknown Source)
at org.eclipse.swt.widgets.Display.<init>(Unknown Source)
at org.eclipse.swt.widgets.Display.getDefault(Unknown Source)
at foo.bar.WebStartRunnable.<init>(WebStartRunnable.java:85)
at foo.bar.WebStartRunnable.main(WebStartRunnable.java:155)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.sun.javaws.Launcher.executeApplication(Launcher.java:1909)
at com.sun.javaws.Launcher.executeMainClass(Launcher.java:1847)
at com.sun.javaws.Launcher.doLaunchApp(Launcher.java:1609)
at com.sun.javaws.Launcher.run(Launcher.java:138)
at java.lang.Thread.run(Thread.java:680)
Здесь снова приведены спецификации:
- ОС: MacOS 10.6 (Snow Leopard) 64 бит
- Java Runntime1.6 64 бит
- SWT-версия: 3.6.2-cocoa-macosx-x86_64
Надеюсь, у кого-то возникла такая же проблема, и она смогла ее исправить, спасибо заранее за все ответы
ура Остановка