启动 iOS 在初始化时失败。在本地运行
Launch iOS fails on init. Runs locally
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'org.javafxports:jfxmobile-plugin:1.1.1'
}
}
apply plugin: 'org.javafxports.jfxmobile'
repositories {
jcenter()
maven {
url 'https://mvnrepository.com/artifact/com.caucho/hessian'
}
maven {
url'http://nexus.gluonhq.com/nexus/content/repositories/releases'
}
}
mainClassName = 'com.demoapp.DemoApp'
dependencies {
compile 'com.gluonhq:charm:4.1.0'
compile 'com.airhacks:afterburner.mfx:1.6.2'
compile 'com.caucho:hessian:4.0.7'
compile 'com.google.code.gson:gson:2.3.1'
compile 'org.apache.poi:poi:3.9'
}
jfxmobile {
downConfig {
version '3.0.0'
plugins 'display', 'lifecycle', 'statusbar', 'storage'
}
android {
manifest = 'src/android/AndroidManifest.xml'
}
ios {
infoPList = file('src/ios/Default-Info.plist')
forceLinkClasses = [
'com.demoapp.**.*',
'com.gluonhq.**.*',
'io.datafx.**.*',
'javax.annotations.**.*',
'javax.inject.**.*',
'javax.json.**.*',
'org.glassfish.json.**.*',
'com.caucho.**.*',
'com.google.code.gson.**.*',
'org.apache.poi.**.*'
]
}
}
应用程序初始化方法中出现错误异常
QuantumRenderer:关闭
java.lang.RuntimeException: 应用程序初始化方法异常
在 com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:109069952)
在 com.sun.javafx.application.LauncherImpl.lambda$launchApplication$156(LauncherImpl.java:109069952)
在 com.sun.javafx.application.LauncherImpl$$Lambda$2.run(来源不明)
在 java.lang.Thread.run(Thread.java:109069952)
由以下原因引起:java.lang.NoSuchMethodError:com.demoapp.DemoApp$$Lambda$1.()V
在 com.demoapp.DemoApp.init(DemoApp.java:109070784)
在 com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:109070784)
在 com.sun.javafx.application.LauncherImpl.lambda$launchApplication$156(LauncherImpl.java:109070784)
在 com.sun.javafx.application.LauncherImpl$$Lambda$2.run(来源不明)
在 java.lang.Thread.run(Thread.java:109070784)
知道在部署时在哪里搜索 init-Error 吗?谢谢
初始化:
@Override
public void init() {
NavigationDrawer drawer = new NavigationDrawer();
NavigationDrawer.Header header = new NavigationDrawer.Header("demo inc", "smart teamwork", new Avatar(21, new Image(DemoApp.class.getResourceAsStream("/icon.png"))));
drawer.setHeader(header);
drawer.getItems().addAll(primaryItem, secondaryItem, thirdItem);
primaryItem.setSelected(true);
addViewFactory(PRIMARY_VIEW, () -> (View) new PrimaryView().getView());
addViewFactory(SECONDARY_VIEW, () -> (View) new SecondaryView().getView());
addViewFactory(THIRD_VIEW, () -> (View) new ThirdView().getView());
addLayerFactory(MENU_LAYER, () -> new SidePopupView(drawer));
}
@Override
public void postInit(Scene scene) {
Swatch.ORANGE.assignTo(scene);
scene.getStylesheets().add(DemoApp.class.getResource("style.css").toExternalForm());
((Stage) scene.getWindow()).getIcons().add(new Image(DemoApp.class.getResourceAsStream("/icon.png")));
switchView(SECONDARY_VIEW);
}
异常表明 lambda 表达式失败。可能是您的 init
方法中的视图供应商。
出现此异常的可能原因是:
Retrolambda
jfxmobile 插件自版本 1.1.0 applies retrolambda 到所有依赖项。但是你不能申请两次。
第一步是检查哪些依赖项可能使用 retrolambda。
Charm 4+ 不使用它。 Afterburner 1.6.2 可以,所以您可以将其更改为:
dependencies {
compileNoRetrolambda 'com.airhacks:afterburner.mfx:1.6.2'
}
或者您使用排除它的全新版本:
dependencies {
compile 'com.airhacks:afterburner.mfx:1.6.3'
}
为了确保 none 的其他依赖项使用它,请将 hessian、gson 和 poi 中的 compile
替换为 compileNoRetrolambda
。
缓存
此外,当使用较低版本的 jfxmobile 插件更新项目时,您的缓存中可能有以前的构建。这可能包含您使用 retrolambda 编译的 类。
虽然代码是一样的,但是Gradle会跳过再次编译它们,但是当再次对它们应用retrolambda插件时,这会失败。
为避免此问题,一个简单的解决方案是在构建和部署项目之前使用 clean
:运行 ./gradlew clean launchIOSDevice
.
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'org.javafxports:jfxmobile-plugin:1.1.1'
}
}
apply plugin: 'org.javafxports.jfxmobile'
repositories {
jcenter()
maven {
url 'https://mvnrepository.com/artifact/com.caucho/hessian'
}
maven {
url'http://nexus.gluonhq.com/nexus/content/repositories/releases'
}
}
mainClassName = 'com.demoapp.DemoApp'
dependencies {
compile 'com.gluonhq:charm:4.1.0'
compile 'com.airhacks:afterburner.mfx:1.6.2'
compile 'com.caucho:hessian:4.0.7'
compile 'com.google.code.gson:gson:2.3.1'
compile 'org.apache.poi:poi:3.9'
}
jfxmobile {
downConfig {
version '3.0.0'
plugins 'display', 'lifecycle', 'statusbar', 'storage'
}
android {
manifest = 'src/android/AndroidManifest.xml'
}
ios {
infoPList = file('src/ios/Default-Info.plist')
forceLinkClasses = [
'com.demoapp.**.*',
'com.gluonhq.**.*',
'io.datafx.**.*',
'javax.annotations.**.*',
'javax.inject.**.*',
'javax.json.**.*',
'org.glassfish.json.**.*',
'com.caucho.**.*',
'com.google.code.gson.**.*',
'org.apache.poi.**.*'
]
}
}
应用程序初始化方法中出现错误异常 QuantumRenderer:关闭 java.lang.RuntimeException: 应用程序初始化方法异常 在 com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:109069952) 在 com.sun.javafx.application.LauncherImpl.lambda$launchApplication$156(LauncherImpl.java:109069952) 在 com.sun.javafx.application.LauncherImpl$$Lambda$2.run(来源不明) 在 java.lang.Thread.run(Thread.java:109069952) 由以下原因引起:java.lang.NoSuchMethodError:com.demoapp.DemoApp$$Lambda$1.()V 在 com.demoapp.DemoApp.init(DemoApp.java:109070784) 在 com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:109070784) 在 com.sun.javafx.application.LauncherImpl.lambda$launchApplication$156(LauncherImpl.java:109070784) 在 com.sun.javafx.application.LauncherImpl$$Lambda$2.run(来源不明) 在 java.lang.Thread.run(Thread.java:109070784)
知道在部署时在哪里搜索 init-Error 吗?谢谢
初始化:
@Override
public void init() {
NavigationDrawer drawer = new NavigationDrawer();
NavigationDrawer.Header header = new NavigationDrawer.Header("demo inc", "smart teamwork", new Avatar(21, new Image(DemoApp.class.getResourceAsStream("/icon.png"))));
drawer.setHeader(header);
drawer.getItems().addAll(primaryItem, secondaryItem, thirdItem);
primaryItem.setSelected(true);
addViewFactory(PRIMARY_VIEW, () -> (View) new PrimaryView().getView());
addViewFactory(SECONDARY_VIEW, () -> (View) new SecondaryView().getView());
addViewFactory(THIRD_VIEW, () -> (View) new ThirdView().getView());
addLayerFactory(MENU_LAYER, () -> new SidePopupView(drawer));
}
@Override
public void postInit(Scene scene) {
Swatch.ORANGE.assignTo(scene);
scene.getStylesheets().add(DemoApp.class.getResource("style.css").toExternalForm());
((Stage) scene.getWindow()).getIcons().add(new Image(DemoApp.class.getResourceAsStream("/icon.png")));
switchView(SECONDARY_VIEW);
}
异常表明 lambda 表达式失败。可能是您的 init
方法中的视图供应商。
出现此异常的可能原因是:
Retrolambda
jfxmobile 插件自版本 1.1.0 applies retrolambda 到所有依赖项。但是你不能申请两次。
第一步是检查哪些依赖项可能使用 retrolambda。
Charm 4+ 不使用它。 Afterburner 1.6.2 可以,所以您可以将其更改为:
dependencies {
compileNoRetrolambda 'com.airhacks:afterburner.mfx:1.6.2'
}
或者您使用排除它的全新版本:
dependencies {
compile 'com.airhacks:afterburner.mfx:1.6.3'
}
为了确保 none 的其他依赖项使用它,请将 hessian、gson 和 poi 中的 compile
替换为 compileNoRetrolambda
。
缓存
此外,当使用较低版本的 jfxmobile 插件更新项目时,您的缓存中可能有以前的构建。这可能包含您使用 retrolambda 编译的 类。
虽然代码是一样的,但是Gradle会跳过再次编译它们,但是当再次对它们应用retrolambda插件时,这会失败。
为避免此问题,一个简单的解决方案是在构建和部署项目之前使用 clean
:运行 ./gradlew clean launchIOSDevice
.