Не удается найти jfxrt.jar (javafx) во время выполнения

1

В настоящее время я использую только один класс из пакета javafx.util: Pair, потому что я не хотел реализовывать свой собственный класс Pair, поэтому я думал, что это будет разумное решение. Тем не менее, я работаю с Intellij, который, похоже, знает, где найти jfxrt.jar, поэтому я не заметил, что это может вызвать проблемы.

На самом деле, когда я запускаю свой основной из Intellij, все правильно, но когда я пытаюсь упаковать приложение с Maven, а затем java -jar myapp.jar, приложение нуждается в классе Pair и, по-видимому, не находит его:

Exception in thread "main" java.lang.NoClassDefFoundError: javafx/util/Pair

Поэтому я искал вокруг, и вот что я могу вам сказать:

  • Мой JDK равен 1.7.0_40, поэтому я знаю, что jfxrt.jar в комплекте, и я нашел его.
  • Версия Maven: 3.1.0
  • Я на окнах семь
  • Я попытался добавить% JAVA_HOME%\lib\в свою переменную PATH, ничего не изменил
  • Я попытался добавить эту системную зависимость в свой pom.xml:

    <dependencies>
        <dependency>
            <groupId>javafx</groupId>
            <artifactId>jfxrt</artifactId>
            <version>2.0</version>
            <scope>system</scope>
            <systemPath>${java.home}/lib/jfxrt.jar</systemPath>
        </dependency>
    </dependencies>
    

Но, похоже, это ничего не меняет, и даже если это звучит глупо, я попытался скопировать/вставить jfxrt.jar в папку lib в моей банке, и, как ни удивительно, это тоже не сработало...

  • Я использую maven-assembly-plugin следующим образом:

    <groupId>minmax</groupId>
    <artifactId>minmax</artifactId>
    <version>1.0-SNAPSHOT</version>
    <dependencies>
        <dependency>
            <groupId>javafx</groupId>
            <artifactId>jfxrt</artifactId>
            <version>2.0</version>
            <scope>system</scope>
            <systemPath>${java.home}/lib/jfxrt.jar</systemPath>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <configuration>
                    <archive>
                        <manifest>
                            <mainClass>fr.tlasnier.jeux.puissance4.ihm.Puissance4Main</mainClass>
                        </manifest>
                    </archive>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                </configuration>
                <executions>
                    <execution>
                        <id>make-assembly</id> <!-- this is used for inheritance merges -->
                        <phase>package</phase> <!-- bind to the packaging phase -->
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
    

Если у вас есть какие-либо предложения, пожалуйста, продолжайте (может быть, другое решение для моей проблемы с Pair, которая не полагается на javafx...)

Теги:
maven
javafx

2 ответа

0

jfxrt.jar не находится в папке lib...

Это в lib/ext/

например, jdk1.8.0_211/jre/lib/ext/jfxrt.jar

0

Как вы упаковываете свое приложение? Вы можете попробовать с помощью maven-assembly-plugin для упаковки, есть дескриптор, называемый jar-with-dependencies, который добавляет их в последний артефакт, затем вы вызываете пакет mvn.

  • 0
    это то, что я делаю, я отредактировал вопрос, чтобы добавить его

Ещё вопросы

Сообщество Overcoder
Наверх
Меню