Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Ant在JDK9上构建maven时无法创建.pkg文件_Java_Maven_Ant_Maven 3_Maven Plugin - Fatal编程技术网

Java Ant在JDK9上构建maven时无法创建.pkg文件

Java Ant在JDK9上构建maven时无法创建.pkg文件,java,maven,ant,maven-3,maven-plugin,Java,Maven,Ant,Maven 3,Maven Plugin,我正在将javaFx应用程序的构建过程从JDK8升级到JDK9,我遇到了一些问题 构建过程由Maven运行,并使用Ant将jar文件绑定到pkg文件(在MacOSX上)和Windows中的MSI文件中 Maven版本:3.5.2。Ant版本: 我在执行生成期间遇到异常: com.oracle.tools.packager.ConfigException: java.lang.RuntimeException: File /Library/Java/JavaVirtualMachines/jdk-

我正在将javaFx应用程序的构建过程从JDK8升级到JDK9,我遇到了一些问题

构建过程由Maven运行,并使用Ant将jar文件绑定到pkg文件(在MacOSX上)和Windows中的MSI文件中

Maven版本:3.5.2。Ant版本:

我在执行生成期间遇到异常:

com.oracle.tools.packager.ConfigException: java.lang.RuntimeException: File /Library/Java/JavaVirtualMachines/jdk-9.0.4.jdk/Contents/Home/jmods does not belong to <our project binaries folder>
    at jdk.packager/com.oracle.tools.packager.mac.MacPkgBundler.validate(MacPkgBundler.java:568)
    at jdk.packager/com.sun.javafx.tools.packager.PackagerLib.generateNativeBundles(PackagerLib.java:370)
    at jdk.packager/com.sun.javafx.tools.packager.PackagerLib.generateDeploymentPackages(PackagerLib.java:348)
    at com.sun.javafx.tools.ant.DeployFXTask.execute(DeployFXTask.java:310)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
    at jdk.internal.reflect.GeneratedMethodAccessor30.invoke(Unknown Source)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:564)
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
    at org.apache.tools.ant.Task.perform(Task.java:348)
    at org.apache.tools.ant.Target.execute(Target.java:435)
    at org.apache.tools.ant.Target.performTasks(Target.java:456)
    at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1393)
    at org.apache.tools.ant.helper.SingleCheckExecutor.executeTargets(SingleCheckExecutor.java:38)
    at org.apache.tools.ant.Project.executeTargets(Project.java:1248)
    at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:441)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
    at jdk.internal.reflect.GeneratedMethodAccessor30.invoke(Unknown Source)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:564)
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
    at org.apache.tools.ant.Task.perform(Task.java:348)
    at org.apache.tools.ant.Target.execute(Target.java:435)
    at org.apache.tools.ant.Target.performTasks(Target.java:456)
    at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1393)
    at org.apache.tools.ant.Project.executeTarget(Project.java:1364)
    at org.apache.maven.plugin.antrun.AntRunMojo.execute(AntRunMojo.java:313)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:154)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:146)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:309)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:194)
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:107)
    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:955)
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:290)
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:194)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:564)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
com.oracle.tools.packager.ConfigException:java.lang.RuntimeException:File/Library/java/JavaVirtualMachines/jdk-9.0.4.jdk/Contents/Home/jmods不属于
位于jdk.packager/com.oracle.tools.packager.mac.MacPkgBundler.validate(MacPkgBundler.java:568)
位于jdk.packager/com.sun.javafx.tools.packager.PackagerLib.generateNativeBundles(PackagerLib.java:370)
位于jdk.packager/com.sun.javafx.tools.packager.PackagerLib.generateDeploymentPackages(PackagerLib.java:348)
位于com.sun.javafx.tools.ant.DeployFXTask.execute(DeployFXTask.java:310)
位于org.apache.tools.ant.UnknowneElement.execute(unknowneElement.java:292)
位于jdk.internal.reflect.GeneratedMethodAccessor30.invoke(未知源)
位于java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
位于java.base/java.lang.reflect.Method.invoke(Method.java:564)
位于org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
位于org.apache.tools.ant.Task.perform(Task.java:348)
位于org.apache.tools.ant.Target.execute(Target.java:435)
位于org.apache.tools.ant.Target.performTasks(Target.java:456)
位于org.apache.tools.ant.Project.executeSortedTargets(Project.java:1393)
位于org.apache.tools.ant.helper.SingleCheckExecutor.executeTargets(SingleCheckExecutor.java:38)
位于org.apache.tools.ant.Project.executeTargets(Project.java:1248)
位于org.apache.tools.ant.taskdefs.ant.execute(ant.java:441)
位于org.apache.tools.ant.UnknowneElement.execute(unknowneElement.java:292)
位于jdk.internal.reflect.GeneratedMethodAccessor30.invoke(未知源)
位于java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
位于java.base/java.lang.reflect.Method.invoke(Method.java:564)
位于org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
位于org.apache.tools.ant.Task.perform(Task.java:348)
位于org.apache.tools.ant.Target.execute(Target.java:435)
位于org.apache.tools.ant.Target.performTasks(Target.java:456)
位于org.apache.tools.ant.Project.executeSortedTargets(Project.java:1393)
位于org.apache.tools.ant.Project.executeTarget(Project.java:1364)
位于org.apache.maven.plugin.antrun.AntRunMojo.execute(AntRunMojo.java:313)
位于org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)
位于org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
位于org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:154)
位于org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:146)
位于org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:117)
位于org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:81)
位于org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
位于org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
在org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:309)
在org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:194)
位于org.apache.maven.DefaultMaven.execute(DefaultMaven.java:107)
位于org.apache.maven.cli.MavenCli.execute(MavenCli.java:955)
位于org.apache.maven.cli.MavenCli.doMain(MavenCli.java:290)
位于org.apache.maven.cli.MavenCli.main(MavenCli.java:194)
位于java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(本机方法)
位于java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
位于java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
位于java.base/java.lang.reflect.Method.invoke(Method.java:564)
位于org.codehaus.plexus.classworlds.launcher.launcher.launchEnhanced(launcher.java:289)
位于org.codehaus.plexus.classworlds.launcher.launcher.launch(launcher.java:229)
位于org.codehaus.plexus.classworlds.launcher.launcher.mainWithExitCode(launcher.java:415)
位于org.codehaus.plexus.classworlds.launcher.launcher.main(launcher.java:356)
在maven中,我使用以下插件(全部升级到最新版本):

  • maven资源插件:3.0.2
  • maven依赖插件:3.0.2
  • exec maven插件:1.6.0
  • maven编译器插件:3.7.0(配置为使用jdk 9)
  • maven surefire插件:2.20.1
构建在fx:deply任务中失败,该任务在build.xml中配置如下:

<fx:deploy width="600" height="400" install="true"
        verbose="true" nativeBundles="${native.bundles}" 
        outdir="${dist.dir}/bundle" outfile="${app.name}" >

        <fx:application id="${app.id}" name="${app.name}" mainClass="${javafx.main.class}" version="${app.version}" />

        <fx:preferences shortcut="true" menu="false" install="true"/>
        <fx:secondaryLauncher 
            mainClass="com.pingidentity.proxy.proxyhelper.ProxyExternalEntryPoint"
            name="ProxyHelperSetup"/>
        <fx:secondaryLauncher 
            mainClass="com.pingidentity.proxy.proxyhelper.AutoUpdatesExternalEntryPoint"
            name="AutoUpdatesSetup"/>
        <fx:secondaryLauncher
            mainClass="com.pingidentity.proxy.proxyhelper.MigrationHelper" 
            name="MigrationHelperSetup"/>
        <fx:resources >
            <fx:fileset dir="${dist.dir}" includes="${jar.name}"/>
            <fx:fileset dir="${dist.dir}/lib" />
            <fx:fileset dir="${resources.dir}"  type="license" includes="license.rtf"/>
                <fx:fileset dir="${resources.dir}"  type="license" includes="testwelcome.rtf"/>
            <fx:fileset dir="${basedir}/UnlimitedJCEPolicy" includes="*.jar" />
            <!-- the attr os="mac" not works, so I created emtpy folder in case of windows -->
            <fx:fileset dir="${dist.dir}/uninstaller" />
        </fx:resources>
        <fx:info  title="${app.name}" vendor="${vendor}" category="public.app-category.productivity">
        </fx:info>

        <fx:platform>
            <fx:jvmarg value="-Xms128m"/>
            <fx:jvmarg value="-Xmx384m"/>
            <fx:jvmarg value="-Xmn64m"/>
        </fx:platform>

        <fx:bundleArgument arg="mac.CFBundleVersion" value="${app.version}"/>
        <fx:bundleArgument arg="mac.signing-key-developer-id-app" value="Developer ID Application: Ping Identity Corporation (6U3RF4C84N)"/>
        <fx:bundleArgument arg="mac.signing-key-developer-id-installer" value="Developer ID Installer: Ping Identity Corporation (6U3RF4C84N)"/>
            <fx:bundleArgument arg="mainJar" value="${dist.dir}/${jar.name}" />

    </fx:deploy>


你有没有想过如何使用JDK 9实现这一点?

我发现添加这一行可以消除错误: build.xml->fx:deploy->

<fx:runtime strip-native-commands="false">
    <fx:add-modules value="java.base"/>
    <fx:module-path value="${java.home}/jmods"/>
    <fx:module-path value="${basedir}/modules"/>
</fx:runtime>


您是在OSX环境中构建的吗?您是否有可能尝试在其他OSX版本或其他操作系统上构建它?我发现添加这一行会消除错误:。