相关疑难解决方法(0)

使用JavaFX的Maven项目(在`lib`中使用jar文件)

我正在设置一个maven项目,即将使用JavaFX.由于我听说JavaFX没有附带所有版本的Java,我下载并将jfxrt.jar文件放在lib项目的目录中.

1)如何指定不应下载依赖项(即JavaFX),但是哪个位于lib

2)这是否意味着项目可以在任何具有JDK的机器上构建(而不是必需的JDK 1.7 - 更新9+)?

java javafx maven

43
推荐指数
1
解决办法
4万
查看次数

Javafx项目不能用maven编译

我有一个Java FX项目,我正在使用maven 3.0.5来构建.当我运行mvn package/install时,项目失败并抱怨包javafx.*不存在.根据我的理解,Javafx打包在Java 1.7中,因此构建不会选择它是没有意义的.当我在我的IDE(intellij)中编译它时它工作正常,之后我的maven构建也成功安装,但是我不希望每次我进行干净安装时都要通过IDE.有任何想法吗?

这是我的pom:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>thenaglecode</artifactId>
        <groupId>com.thenaglecode</groupId>
        <version>1.0.0.Pre-Alpha</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>system-setup</artifactId>

    <dependencies>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-vfs2</artifactId>
            <version>2.0</version>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
        </dependency>
        <dependency>
            <groupId>commons-collections</groupId>
            <artifactId>commons-collections</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <version>2.6</version>
                <configuration>
                    <includeEmptyDirs>true</includeEmptyDirs>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>com.akathist.maven.plugins.launch4j</groupId>
                <artifactId>launch4j-maven-plugin</artifactId>
                <version>1.5.2</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>launch4j</goal>
                        </goals>
                        <configuration>
                            <headerType>gui</headerType>
                            <jre>
                                <path>C:\Program Files\Java\jre7</path>
                                <minVersion>1.7.0</minVersion>
                                <initialHeapSize>128</initialHeapSize>
                                <maxHeapSize>1024</maxHeapSize>
                            </jre>
                            <jar>${project.build.directory}/${project.build.finalName}.jar</jar> …
Run Code Online (Sandbox Code Playgroud)

java javafx maven

12
推荐指数
2
解决办法
3万
查看次数

JavaFX 2.0 + NetBeans + Maven

我正在使用NetBeans 7.0.1 创建JavaFX 2.0应用程序.当我以标准方式创建项目时,一切正常.不幸的是;)我需要Maven项目......

我没有在Maven存储库中找到JavaFX 2.0,所以我的pom.xml现在看起来像这样:

<?xml version="1.0"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <modelVersion>4.0.0</modelVersion>
    <groupId>mygroup</groupId>
    <artifactId>ui</artifactId>
    <version>0.1</version>
    <name>My Project</name>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
    <dependencies>
        <dependency>
            <groupId>javafx</groupId>
            <artifactId>jfxrt</artifactId>
            <version>2.0</version>
            <type>jar</type>
            <scope>system</scope>
            <systemPath>${env.JAVAFX_HOME}\lib\jfxrt.jar</systemPath>
        </dependency>
    </dependencies>
</project>
Run Code Online (Sandbox Code Playgroud)

设置JAVAFX_HOME系统变量:

C:\Users\rach>echo %JAVAFX_HOME%
C:\Program Files\Oracle\JavaFX Runtime 2.0\
Run Code Online (Sandbox Code Playgroud)

编译没问题,但是当我在NetBeans下启动程序时出现错误:

Exception in thread "main" java.lang.NoClassDefFoundError: javafx/application/Application at java.lang.ClassLoader.defineClass1(Native Method)
Run Code Online (Sandbox Code Playgroud)

但是jfxrt.jar在classpath中:

C:\>echo %CLASSPATH%
C:\Program Files\Oracle\JavaFX Runtime 2.0\lib\jfxrt.jar
Run Code Online (Sandbox Code Playgroud)

当我从命令行启动我的应用程序时它工作正常.

当我在运行时在本地存储库中安装jfxrt.jar时,应用程序仍然无法启动,因为它找不到C:\ Program Files\Oracle\JavaFX Runtime 2.0\bin\mat.dll.pom.xml中:

<dependency>
    <groupId>javafx</groupId>
    <artifactId>jfxrt</artifactId>
    <version>2.0</version>
    <type>jar</type>
</dependency>
Run Code Online (Sandbox Code Playgroud)

影响:

Exception in thread "main" java.lang.RuntimeException: …
Run Code Online (Sandbox Code Playgroud)

netbeans maven javafx-2

6
推荐指数
2
解决办法
9841
查看次数

标签 统计

maven ×3

java ×2

javafx ×2

javafx-2 ×1

netbeans ×1