JAVAFx Build Failed

2020-02-11 05:33发布

I created an app with JavaFx for windows, which is really cool. I can run it from e(fx)clipse, everthing works fine, but I can't make a jar file from the project. I can export it (Right click->Export->Runnable Jar File). However, if I run the jar on MAC OS X , in the menu bar I get "java" menuitem instead of my application name ,which i really don't like. I searched for how to hide that menuitem, or just rename it, and I found that I have to rename the "Application title*" in the build.fxbuild file. Now I can't build it.

So this is what I really want: to remove/hide/rename the "java" menuitem in Mac OS X. If you have any experience, please share it with me. I will be really grateful :) .

I get the following error when I try to run the build.xml file:

[javac] Compiling 22 source files to C:\Users\Hassan\Desktop\Programming\workspace\Raktar_vevo 2.7\build\classes
[javac] warning: [options] bootstrap class path not set in conjunction with -source 1.7
[javac] Note: C:\Users\Hassan\Desktop\Programming\workspace\Raktar_vevo 2.7\build\src\application\SajátKészlet.java uses unchecked or unsafe operations.
[javac] Note: Recompile with -Xlint:unchecked for details.
[javac] 1 warning
 [copy] Copying 12 files to C:\Users\Hassan\Desktop\Programming\workspace\Raktar_vevo 2.7\build\classesinit

    -fx-tasks:
  [taskdef] Could not load definitions from resource com/sun/javafx/tools/ant/antlib.xml. It could not be found.
do-deploy:
     [copy] Copying 20 files to C:\Users\Hassan\Desktop\Programming\workspace\Raktar_vevo 2.7\dist\libs

BUILD FAILED
C:\Users\Hassan\Desktop\Programming\workspace\Raktar_vevo 2.7\build.xml:217: Problem: failed to create task or type javafx:com.sun.javafx.tools.ant:resources
Cause: The name is undefined.
Action: Check the spelling.
Action: Check that any custom tasks/types have been declared.
Action: Check that any <presetdef>/<macrodef> declarations have taken place.
No types or tasks have been defined in this namespace yet


Total time: 22 seconds 

** I use: -Windows 7 64bit -jdk 8 u5 -JAVA_HOME is set -e(fx)clipse (Kepler), I downloaded the All-in-one version (for the lazy link)

Thanks you very much for your help!

6条回答
beautiful°
2楼-- · 2020-02-11 06:08

I have a little better solution with less modification:

This fix path issue (just add ext\ to fix issue)

<path id="fxant">
    <filelist>
        <file name="${java.home}\..\lib\ant-javafx.jar"/>
        <file name="${java.home}\lib\ext\jfxrt.jar"/>
    </filelist>
</path>

Before doing this, you need to have a jdk1.8.xxx in your installed JREs list, not the jre included in the jdk package but jdk itself.
Next, in Run\External Tools\External Tools Configuration open the JRE tab and check that Execution environment is CDC-1.1/Foundation-1.1 (jdk1.8.xxx)
That's all !

查看更多
你好瞎i
3楼-- · 2020-02-11 06:11

You need to setup jdk as jre in Prefereces->Java->Installed JREs, and check it as "separate jre" in External Tools Configuration->JRE in case of Eclipse

Edit: Run > External Tools > External Tool Configuration

enter image description here

enter image description here

enter image description here

查看更多
Root(大扎)
4楼-- · 2020-02-11 06:12

I also got the same issue

<?xml version="1.0" encoding="UTF-8"?>
	<project name="App2" default="do-deploy" basedir="."  xmlns:fx="javafx:com.sun.javafx.tools.ant">
	<target name="init-fx-tasks">
		<path id="fxant">
			<filelist>
				<file name="${java.home}\..\lib\ant-javafx.jar"/> <!-- wrong path -->
				<file name="${java.home}\lib\jfxrt.jar"/> <!-- wrong path -->
			</filelist>
		</path>
	
		<taskdef resource="com/sun/javafx/tools/ant/antlib.xml"      
			uri="javafx:com.sun.javafx.tools.ant"
			classpathref="fxant"/>
	</target>

from this removed the .. in the middle like this

--- file name="${java.home}\lib\ant-javafx.jar"---

then i got basedir error

for that i commented the basedir part and also chande the outdir path from ${basedir}

\build/deploy" outfile="addressApp" nativeBundles="exe" updatemode="background" >

        <!--<fx:platform basedir="${java.home}"/>--> <------ comment Here
        <fx:info title="addressApp" vendor="makery.ch"/>

        <fx:application refId="fxApplication"/>
        <fx:resources refid="appRes"/>
    </fx:deploy>

for the above i saw this https://github.com/reds-heig/logisim-evolution/issues/135

After that build was successful and exe file was generated in deploy folder.

Thanks StackOverflow Peeps

查看更多
成全新的幸福
5楼-- · 2020-02-11 06:13

What I did on Windows 8.1, Java 1.8.0_192, Eclipse Photon (4.8.0) and e(fx)clipse 3.3.0.

  1. Uninstall all (incremental) Java installations (JDK, JRE)
  2. Install latest (needed) Java JDK with JRE
  3. Set default Java to JDK in Eclipse (Windows -> Preferences -> Java -> Installed JRE)
  4. Set Separate JRE to JDK in Eclipse (Run -> External Tools -> External Tools Configurations)
  5. Clean project
  6. build.fxbuild -> ant build.xml and run
查看更多
淡お忘
6楼-- · 2020-02-11 06:15

When you new the JavaFX Project, the generated file, build.xml, maybe have wrong file path.

<?xml version="1.0" encoding="UTF-8"?>
	<project name="App2" default="do-deploy" basedir="."  xmlns:fx="javafx:com.sun.javafx.tools.ant">
	<target name="init-fx-tasks">
		<path id="fxant">
			<filelist>
				<file name="${java.home}\..\lib\ant-javafx.jar"/> <!-- wrong path -->
				<file name="${java.home}\lib\jfxrt.jar"/> <!-- wrong path -->
			</filelist>
		</path>
	
		<taskdef resource="com/sun/javafx/tools/ant/antlib.xml"      
			uri="javafx:com.sun.javafx.tools.ant"
			classpathref="fxant"/>
	</target>

you have to check that where are the ant-javafx.jar and the jfxrt.jar ? For example, JDK 1.8 the two files are in the difference place, C:\Program Files\Java\jdk1.8.0_20\lib\ant-javafx.jar C:\Program Files\Java\jre1.8.0_20\lib\ext\jfxrt.jar

so now I only find the way to modify by myself...

<?xml version="1.0" encoding="UTF-8"?>
	<project name="App" default="do-deploy" basedir="."  xmlns:fx="javafx:com.sun.javafx.tools.ant">
	<target name="init-fx-tasks">
		<path id="fxant">
			<filelist>
				<file name="C:\Program Files\Java\jdk1.8.0_20\lib\ant-javafx.jar"/>
				<file name="C:\Program Files\Java\jre1.8.0_20\lib\ext\jfxrt.jar"/>
			</filelist>
		</path>
	
		<taskdef resource="com/sun/javafx/tools/ant/antlib.xml"      
			uri="javafx:com.sun.javafx.tools.ant"
			classpathref="fxant"/>
	</target>

after modify the files, right click choose the Run as Ant Build!

查看更多
迷人小祖宗
7楼-- · 2020-02-11 06:19

I know that I'm a bit late to answer this, but so many of us are still struggling with this issue and in my case, I could not find a proper answer at any place.

In my case when I was getting the same issue, I managed to get it to work by going to Run->External Tools_>External Tools Configurations and selecting JRE Tab. I had to change the Execution environment from 1.7 to CDC-1.0/Foundation-1.0 (jdk1.7.0_25) (and CDC-1.1 also works).

Definitely a newb when it comes to ant, so not sure why the lazy install doesn't pick up the path correctly, but hopefully this will come in handy to someone else pounding their head before reaching for the excedrin.

查看更多
登录 后发表回答