【问题标题】:JavaFX 11 Deployment Failure: failed to create task or type javafx:com.sun.javafx.tools.ant:filesetJavaFX 11 部署失败:无法创建任务或键入 javafx:com.sun.javafx.tools.ant:fileset
【发布时间】:2019-06-20 03:53:56
【问题描述】:

我正在尝试部署我的项目,但我不断收到以下错误,我该怎么办?此外,我有 java 11,但我只能在 IntelliJ 中选择高达 10 的项目语言级别,但我可以使用“var”语法并运行它。 IntelliJ 信息:

编辑: 显然 intellij IDEA 1.x 不支持 java 11 我已经下载了最新版本,目前正在尝试重做整个 进程

最终编辑:我已经通过在 intelliJ IDEA 3.x 上使用 java 8 解决了这个问题,并遵循了这个guide。谢谢hce

信息:Java FX 打包器:[C:/Program 文件/Java/jdk-11.0.2\bin\java, -Dant.home=D:\Programs\IntelliJ IDEA 2018.1.5\lib\ant, -classpath, D:\Programs\IntelliJ IDEA 2018.1.5\lib\ant/lib/ant.jar;D:\Programs\IntelliJ IDEA 2018.1.5\lib\ant/lib/ant -launcher.jar;C:/Program Files/Java/jdk-11.0.2/lib/ant-javafx.jar;C:/Program 文件/Java/jdk-11.0.2/jre/lib/jfxrt.jar, org.apache.tools.ant.launch.Launcher,-f, C:\Users\HP.IntelliJIdea2018.1\system\compile-server\luckypick-m_8a6db982_temp_\build.xml] 信息:Java FX 打包程序:构建文件: C:\Users\HP.IntelliJIdea2018.1\system\compile-server\luckypick-m_8a6db982_temp_\build.xml 信息:Java FX 打包程序:[taskdef] 无法加载定义 来自资源 com/sun/javafx/tools/ant/antlib.xml。不可能 成立。信息:Java FX 打包器: 信息:Java FX 打包器: 构建工件:信息:27.01.2019 15:09 - 编译完成 在 8 秒 226 毫秒内出现 2 个错误和 0 个警告错误:Java FX Packager: 构建失败 C:\Users\HP.IntelliJIdea2018.1\system\compile-server\luckypick-m_8a6db982_temp_\build.xml:3: 问题:创建任务或类型失败 javafx:com.sun.javafx.tools.ant:fileset 原因:名称未定义。 行动:检查拼写。行动:检查任何自定义任务/类型 已被宣布。行动:检查任何 / 已发表声明。没有定义类型或任务 此命名空间尚未总时间:0 秒错误:Java FX 打包程序: fx:deploy 任务失败。

这是我的项目目录的外观以及它包含哪些文件。

这里是luckypick.properties

path.variable.kotl\u0131n_bundled=D\:\\Programs\\IntelliJ IDEA 2018.1.5\\plugins\\Kotlin\\kotlinc
path.variable.maven_repos\u0131tory=C\:\\Users\\HP\\.m2\\repository
jdk.home.11=C\:/Program Files/Java/jdk-11.0.2
idea.home=D\:/Programs/IntelliJ IDEA 2018.1.5
javafx.home=C\:/Users/HP/Documents/javafx-sdk-11.0.2
javac2.instrumentation.includeJavaRuntime=false

这里是luckpick.xml

<?xml version="1.0" encoding="UTF-8"?>
<project name="luckypick" default="all">


    <property file="luckypick.properties"/>
    <!-- Uncomment the following property if no tests compilation is needed -->
    <!--
    <property name="skip.tests" value="true"/>
     -->

    <!-- Compiler options -->

    <property name="compiler.debug" value="on"/>
    <property name="compiler.generate.no.warnings" value="off"/>
    <property name="compiler.args" value=""/>
    <property name="compiler.max.memory" value="700m"/>
    <patternset id="ignored.files">
        <exclude name="**/*.hprof/**"/>
        <exclude name="**/*.pyc/**"/>
        <exclude name="**/*.pyo/**"/>
        <exclude name="**/*.rbc/**"/>
        <exclude name="**/*.yarb/**"/>
        <exclude name="**/*~/**"/>
        <exclude name="**/.DS_Store/**"/>
        <exclude name="**/.git/**"/>
        <exclude name="**/.hg/**"/>
        <exclude name="**/.svn/**"/>
        <exclude name="**/CVS/**"/>
        <exclude name="**/__pycache__/**"/>
        <exclude name="**/_svn/**"/>
        <exclude name="**/vssver.scc/**"/>
        <exclude name="**/vssver2.scc/**"/>
    </patternset>
    <patternset id="library.patterns">
        <include name="*.egg"/>
        <include name="*.jar"/>
        <include name="*.ear"/>
        <include name="*.swc"/>
        <include name="*.war"/>
        <include name="*.zip"/>
        <include name="*.ane"/>
    </patternset>
    <patternset id="compiler.resources">
        <exclude name="**/?*.java"/>
        <exclude name="**/?*.form"/>
        <exclude name="**/?*.class"/>
        <exclude name="**/?*.groovy"/>
        <exclude name="**/?*.scala"/>
        <exclude name="**/?*.flex"/>
        <exclude name="**/?*.kt"/>
        <exclude name="**/?*.clj"/>
    </patternset>

    <!-- JDK definitions -->

    <property name="jdk.bin.11" value="${jdk.home.11}/bin"/>
    <path id="jdk.classpath.11">
        <fileset dir="${jdk.home.11}">
            <include name="/legal/java.base"/>
            <include name="/legal/java.compiler"/>
            <include name="/legal/java.datatransfer"/>
            <include name="/legal/java.desktop"/>
            <include name="/legal/java.instrument"/>
            <include name="/legal/java.logging"/>
            <include name="/legal/java.management"/>
            <include name="/legal/java.management.rmi"/>
            <include name="/legal/java.naming"/>
            <include name="/legal/java.net.http"/>
            <include name="/legal/java.prefs"/>
            <include name="/legal/java.rmi"/>
            <include name="/legal/java.scripting"/>
            <include name="/legal/java.se"/>
            <include name="/legal/java.security.jgss"/>
            <include name="/legal/java.security.sasl"/>
            <include name="/legal/java.smartcardio"/>
            <include name="/legal/java.sql"/>
            <include name="/legal/java.sql.rowset"/>
            <include name="/legal/java.transaction.xa"/>
            <include name="/legal/java.xml"/>
            <include name="/legal/java.xml.crypto"/>
            <include name="/legal/jdk.accessibility"/>
            <include name="/legal/jdk.aot"/>
            <include name="/legal/jdk.attach"/>
            <include name="/legal/jdk.charsets"/>
            <include name="/legal/jdk.compiler"/>
            <include name="/legal/jdk.crypto.cryptoki"/>
            <include name="/legal/jdk.crypto.ec"/>
            <include name="/legal/jdk.crypto.mscapi"/>
            <include name="/legal/jdk.dynalink"/>
            <include name="/legal/jdk.editpad"/>
            <include name="/legal/jdk.hotspot.agent"/>
            <include name="/legal/jdk.httpserver"/>
            <include name="/legal/jdk.internal.ed"/>
            <include name="/legal/jdk.internal.jvmstat"/>
            <include name="/legal/jdk.internal.le"/>
            <include name="/legal/jdk.internal.opt"/>
            <include name="/legal/jdk.internal.vm.ci"/>
            <include name="/legal/jdk.internal.vm.compiler"/>
            <include name="/legal/jdk.internal.vm.compiler.management"/>
            <include name="/legal/jdk.jartool"/>
            <include name="/legal/jdk.javadoc"/>
            <include name="/legal/jdk.jcmd"/>
            <include name="/legal/jdk.jconsole"/>
            <include name="/legal/jdk.jdeps"/>
            <include name="/legal/jdk.jdi"/>
            <include name="/legal/jdk.jdwp.agent"/>
            <include name="/legal/jdk.jfr"/>
            <include name="/legal/jdk.jlink"/>
            <include name="/legal/jdk.jshell"/>
            <include name="/legal/jdk.jsobject"/>
            <include name="/legal/jdk.jstatd"/>
            <include name="/legal/jdk.localedata"/>
            <include name="/legal/jdk.management"/>
            <include name="/legal/jdk.management.agent"/>
            <include name="/legal/jdk.management.jfr"/>
            <include name="/legal/jdk.naming.dns"/>
            <include name="/legal/jdk.naming.rmi"/>
            <include name="/legal/jdk.net"/>
            <include name="/legal/jdk.pack"/>
            <include name="/legal/jdk.rmic"/>
            <include name="/legal/jdk.scripting.nashorn"/>
            <include name="/legal/jdk.scripting.nashorn.shell"/>
            <include name="/legal/jdk.sctp"/>
            <include name="/legal/jdk.security.auth"/>
            <include name="/legal/jdk.security.jgss"/>
            <include name="/legal/jdk.unsupported"/>
            <include name="/legal/jdk.unsupported.desktop"/>
            <include name="/legal/jdk.xml.dom"/>
            <include name="/legal/jdk.zipfs"/>
        </fileset>
    </path>

    <property name="project.jdk.home" value="${jdk.home.11}"/>
    <property name="project.jdk.bin" value="${jdk.bin.11}"/>
    <property name="project.jdk.classpath" value="jdk.classpath.11"/>


    <!-- Project Libraries -->

    <path id="library.javafx-swt.classpath">
        <pathelement location="${javafx.home}/lib/javafx-swt.jar"/>
        <pathelement location="${javafx.home}/lib/javafx.base.jar"/>
        <pathelement location="${javafx.home}/lib/javafx.controls.jar"/>
        <pathelement location="${javafx.home}/lib/javafx.fxml.jar"/>
        <pathelement location="${javafx.home}/lib/javafx.graphics.jar"/>
        <pathelement location="${javafx.home}/lib/javafx.media.jar"/>
        <pathelement location="${javafx.home}/lib/javafx.swing.jar"/>
        <pathelement location="${javafx.home}/lib/javafx.web.jar"/>
    </path>


    <!-- Global Libraries -->
    <!-- Register Custom Compiler Taskdefs -->
    <property name="javac2.home" value="${idea.home}/lib"/>
    <path id="javac2.classpath">
        <fileset dir="${javac2.home}">
            <include name="javac2.jar"/>
            <include name="jdom.jar"/>
            <include name="asm-all*.jar"/>
            <include name="jgoodies-forms.jar"/>
        </fileset>
    </path>
    <target name="register.custom.compilers">
        <taskdef name="javac2" classname="com.intellij.ant.Javac2" classpathref="javac2.classpath"/>
        <taskdef name="instrumentIdeaExtensions" classname="com.intellij.ant.InstrumentIdeaExtensions"
                 classpathref="javac2.classpath"/>
    </target>

    <!-- Modules -->


    <!-- Module LuckyPick -->

    <dirname property="module.luckypick.basedir" file="${ant.file}"/>


    <property name="module.jdk.home.luckypick" value="${project.jdk.home}"/>
    <property name="module.jdk.bin.luckypick" value="${project.jdk.bin}"/>
    <property name="module.jdk.classpath.luckypick" value="${project.jdk.classpath}"/>

    <property name="compiler.args.luckypick" value="-encoding UTF-8 -source 10 -target 10 ${compiler.args}"/>

    <property name="luckypick.output.dir" value="${module.luckypick.basedir}/out/production/LuckyPick"/>
    <property name="luckypick.testoutput.dir" value="${module.luckypick.basedir}/out/test/LuckyPick"/>

    <path id="luckypick.module.bootclasspath">
        <!-- Paths to be included in compilation bootclasspath -->
    </path>

    <path id="luckypick.module.production.classpath">
        <path refid="${module.jdk.classpath.luckypick}"/>
        <path refid="library.javafx-swt.classpath"/>
    </path>

    <path id="luckypick.runtime.production.module.classpath">
        <pathelement location="${luckypick.output.dir}"/>
        <path refid="library.javafx-swt.classpath"/>
    </path>

    <path id="luckypick.module.classpath">
        <path refid="${module.jdk.classpath.luckypick}"/>
        <pathelement location="${luckypick.output.dir}"/>
        <path refid="library.javafx-swt.classpath"/>
    </path>

    <path id="luckypick.runtime.module.classpath">
        <pathelement location="${luckypick.testoutput.dir}"/>
        <pathelement location="${luckypick.output.dir}"/>
        <path refid="library.javafx-swt.classpath"/>
    </path>


    <patternset id="excluded.from.module.luckypick">
        <patternset refid="ignored.files"/>
    </patternset>

    <patternset id="excluded.from.compilation.luckypick">
        <patternset refid="excluded.from.module.luckypick"/>
    </patternset>

    <path id="luckypick.module.sourcepath">
        <dirset dir="${module.luckypick.basedir}">
            <include name="src"/>
            <include name="res"/>
        </dirset>
    </path>


    <target name="compile.module.luckypick" depends="compile.module.luckypick.production,compile.module.luckypick.tests"
            description="Compile module LuckyPick"/>

    <target name="compile.module.luckypick.production" depends="register.custom.compilers"
            description="Compile module LuckyPick; production classes">
        <mkdir dir="${luckypick.output.dir}"/>
        <javac2 destdir="${luckypick.output.dir}" debug="${compiler.debug}" nowarn="${compiler.generate.no.warnings}"
                memorymaximumsize="${compiler.max.memory}" fork="true" executable="${module.jdk.bin.luckypick}/javac">
            <compilerarg line="${compiler.args.luckypick}"/>
            <bootclasspath refid="luckypick.module.bootclasspath"/>
            <classpath refid="luckypick.module.production.classpath"/>
            <src refid="luckypick.module.sourcepath"/>
            <patternset refid="excluded.from.compilation.luckypick"/>
        </javac2>

        <copy todir="${luckypick.output.dir}">
            <fileset dir="${module.luckypick.basedir}/src">
                <patternset refid="compiler.resources"/>
                <type type="file"/>
            </fileset>
            <fileset dir="${module.luckypick.basedir}/res">
                <patternset refid="compiler.resources"/>
                <type type="file"/>
            </fileset>
        </copy>
    </target>

    <target name="compile.module.luckypick.tests"
            depends="register.custom.compilers,compile.module.luckypick.production"
            description="compile module LuckyPick; test classes" unless="skip.tests"/>

    <target name="clean.module.luckypick" description="cleanup module">
        <delete dir="${luckypick.output.dir}"/>
        <delete dir="${luckypick.testoutput.dir}"/>
    </target>

    <target name="init" description="Build initialization">
        <!-- Perform any build initialization in this target -->
    </target>

    <target name="clean" depends="clean.module.luckypick" description="cleanup all"/>

    <target name="build.modules" depends="init, clean, compile.module.luckypick" description="build all modules"/>

    <target name="all" depends="build.modules" description="build all"/>
</project>

ant 构建输出:

【问题讨论】:

  • 嗨@Altug Ceylan,你能提供你的luckypick.xml/build.xml吗?顺便说一句,您可以将 IntelliJ IDEA 更新到 2018.3.4。
  • @hce 我添加了 luckypick.xml ,谢谢你的提示

标签: java intellij-idea javafx openjfx


【解决方案1】:

请。尝试以下方法:

<project name="luckypick" default="all" basedir="." xmlns:fx="javafx:com.sun.javafx.tools.ant">
...
<target name="all" depends="build.modules" description="build all">
   <taskdef resource="com/sun/javafx/tools/ant/antlib.xml"      
            uri="javafx:com.sun.javafx.tools.ant"
            classpath=".:path/to/sdk/lib/ant-javafx.jar"/>    
</target>

同时尝试使用 JDK 8。Packager 已从 Oracle JDK 11 中删除。 见here for Details

打包工具还可以帮助填补其他技术留下的空白 例如从 Oracle 的 JDK 11 中删除的 Java Web Start,以及 pack200,在 JDK 11 中已弃用,以备将来删除 发布。开发人员可以使用 jlink 将 JDK 精简到最小 需要的一组模块,然后使用打包工具 生成可部署到目标的压缩可安装映像 机器。

为了解决之前的这些要求,一个名为的打包工具 javapackager 与 Oracle 的 JDK 8 一起分发。但是,它是 因 JavaFX 的移除而从 Oracle 的 JDK 11 中移除。

【讨论】:

  • 在 java 8 和 11 上的“taskdef”键有一个警告,指出:“资源 'com/sun/javafx/tools/ant/antlib.xml' 在类路径中找不到”和这一行: "xmlns:fx="javafx:com.sun.javafx.tools.ant" 有"URI未注册"。在 属性'artifact.output.luckypick ' 是未知的,并且在 xmlns:fx="javafx:com.sun.javafx.tools.ant"> 找不到 URI。我已经在 java 11 和 8 上相应地更改了 xml 文件。只有 java 8 会产生损坏的 jar 文件。我不知道该怎么办...
  • 您能在 github 上提供您的源代码还是以 zip 文件的形式提供?
  • github.com/AranNomante/luckyPick 在这里,在此先感谢您的宝贵时间
  • @AltuğCeylan 欢迎您。请参阅我编辑的答案。希望对您有所帮助。
  • 你能恢复到上一次编辑吗(它对我有用),我认为它不起作用,但这是因为我一直在摆弄 vm 选项,我将 vm 选项留空并且它有效.我可以部署一个安装工作​​程序的 .msi 文件。
猜你喜欢
  • 2015-08-11
  • 1970-01-01
  • 1970-01-01
  • 2015-11-18
  • 1970-01-01
  • 2012-06-01
  • 2019-07-01
  • 2019-06-27
  • 1970-01-01
相关资源
最近更新 更多