我已经将EclipseLink MOXy添加到我的JavaFX-8应用程序中,从那时起应用程序就不再启动了。错误是:无法找到或加载主类x.y.z.当我删除MOXy时,应用程序启动非常好。当然,应用程序不使用JAXB的MOXy实现。
JavaFX应用程序打包为自执行jar。它包括一个用于JavaSE的CDI的Weld实现,以及一个jax-rs的Jersey实现。我在包中包含我的JAXB类的jaxb.properties文件,它确实指定了MOXy的JAXB上下文工厂。
基本上,我不明白当MOXy打包在应用程序中时应用程序不再启动的原因。任何线索?
修改 问题可能来自用作MOXy依赖关系的jar文件,可以签名。
答案 0 :(得分:0)
好的,这确实是生成的应用程序JAR文件中的签名不匹配。
我正在使用maven来构建JavaFX应用程序。在构建过程中,所有依赖项在包阶段都被解压缩,然后再次打包在包含我的应用程序的单个JAR文件中。
解压缩步骤是使用maven依赖插件完成的。我必须添加以下配置以排除所有签名文件:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>unpack-dependencies</id>
<phase>package</phase>
<goals>
<goal>unpack-dependencies</goal>
</goals>
<configuration>
<excludes>META-INF/*.SF</excludes>
<excludes>META-INF/*.DSA</excludes>
<excludes>META-INF/*.RSA</excludes>
<excludeScope>system</excludeScope>
<excludeGroupIds>junit,org.mockito,org.hamcrest</excludeGroupIds>
<outputDirectory>${project.build.directory}/classes</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
现在可行。