powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / javafx+swing NoClassDefFoundError
9 сообщений из 9, страница 1 из 1
javafx+swing NoClassDefFoundError
    #38849975
worker7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пытаюсь добавить javafx компонент (WebView) в swing приложение. Насколько я понял, нужно взять JFXPanel (который есть JComponent) и разместить на нем WebView. Приложение собирается при помощи maven.
Чтобы скомпилировать проект добавил <bootclasspath> в настройки maven-compiler-plugin.
Вот pom.xml
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
<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">
    <modelVersion>4.0.0</modelVersion>
    <groupId>ru.test</groupId>
    <artifactId>swtex</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>
    <name>ru.test.swtex</name>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <ru.test.distr>${project.build.directory}/distr</ru.test.distr>
    </properties>
    <build>
        <finalName>${project.artifactId}</finalName>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-jar-plugin</artifactId>
                    <version>2.3.2</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-dependency-plugin</artifactId>
                    <version>2.8</version>
                    <executions>
                        <execution>
                            <id>rep-def</id>
                            <phase>install</phase>
                            <goals>
                                <goal>copy-dependencies</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <outputDirectory>${ru.eml.distr}</outputDirectory>
                    <archive>
                        <manifest>
                            <addClasspath>true</addClasspath>
                            <classpathPrefix>lib/</classpathPrefix>
                            <mainClass>ru.test.swtex.App</mainClass>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <configuration>
                    <outputDirectory>${ru.test.distr}/lib</outputDirectory>
                </configuration>                                
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                    <compilerArguments>
                        <bootclasspath>${sun.boot.class.path}${path.separator}${java.home}/lib/jfxrt.jar</bootclasspath>
                    </compilerArguments>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <dependencies>
        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <version>1.4.181</version>
        </dependency>
    </dependencies>
</project>


Приложение собирается нормально. Но при выполнении на строке кода:
Код: java
1.
WebView webBrowser = new WebView();


я получаю ошибку java.lang.NoClassDefFoundError: javafx/scene/web/WebView

Как собрать проект, чтобы при запуске он находил javafx?
...
Рейтинг: 0 / 0
javafx+swing NoClassDefFoundError
    #38850061
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
worker7,

А вот это для чего? В Java 7 разве нет этого класса?
Код: xml
1.
2.
3.
<compilerArguments>
                        <bootclasspath>${sun.boot.class.path}${path.separator}${java.home}/lib/jfxrt.jar</bootclasspath>
</compilerArguments>
...
Рейтинг: 0 / 0
javafx+swing NoClassDefFoundError
    #38850072
worker7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczА вот это для чего? В Java 7 разве нет этого класса?
В rt.jar нет. JavaFX классы упакованы в jfxrt.jar, который лежит рядом (в той же папке) с rt.jar
Если bootclasspath не указывать, то при сборке будут ошибки (компилятор видимо не находит jfxrt.jar)
Код: sql
1.
package javafx.scene.web does not exist
...
Рейтинг: 0 / 0
javafx+swing NoClassDefFoundError
    #38850078
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
worker7,

А под какой версией JDK запускаете?
http://stackoverflow.com/questions/10888367/compiling-and-running-with-javafx-2-1
В ранних билдах, действительно, нужно было JavaFX Runtime отдельно в classpath прописывать.
...
Рейтинг: 0 / 0
javafx+swing NoClassDefFoundError
    #38850131
worker7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczА под какой версией JDK запускаете?
JAVA_HOME=C:\Program Files\Java\jdk1.7.0_60
...
Рейтинг: 0 / 0
javafx+swing NoClassDefFoundError
    #38850132
worker7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В фале javafx.properties укзана версия JavaFX:
Код: sql
1.
javafx.runtime.version=2.2.60
...
Рейтинг: 0 / 0
javafx+swing NoClassDefFoundError
    #38850136
worker7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
По поводу http://stackoverflow.com/questions/10888367/compiling-and-running-with-javafx-2-1
ключ -cp для запуска jar файлов не работает вроде, там пути нужно в манифесте прописывать, насколько я знаю. Пробовал распаковать jar и поменять манифест в ручную, но видимо я что-то неправильно писал - т.к. не помоголо.
...
Рейтинг: 0 / 0
javafx+swing NoClassDefFoundError
    #38850137
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
worker7По поводу http://stackoverflow.com/questions/10888367/compiling-and-running-with-javafx-2-1
ключ -cp для запуска jar файлов не работает вроде, там пути нужно в манифесте прописывать, насколько я знаю. Пробовал распаковать jar и поменять манифест в ручную, но видимо я что-то неправильно писал - т.к. не помоголо.

Работает вот так:
java -cp "your_app.jar;javafxrt.jar" com.pack.MainClassName
...
Рейтинг: 0 / 0
javafx+swing NoClassDefFoundError
    #38850153
worker7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
to Blazkowicz
Вообщем через -cp с указанием пути к jfxrt.jar сработало, спасибо. Но это как-то криво - хотелось чтобы jar запускался по клику (как exe), да и отладка в ide нужна.

Так что нашел другой способ - убрал <bootclasspath> и добавил
Код: xml
1.
2.
3.
4.
5.
6.
7.
        <dependency>
            <groupId>javafx</groupId>
            <artifactId>jfxrt</artifactId>
            <version>${java.version}</version>
            <scope>system</scope>
            <systemPath>${java.home}/lib/jfxrt.jar</systemPath>
        </dependency>


Хотя все равно не очень - т.к. jfxrt.jar теперь копируется вместе с другими либами в локальноый каталог lib (а весит она 15мб).
[Если не копировать, то непонятно как указать универсальный путь к jfxrt.jar в MANIFEST.MF]
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / javafx+swing NoClassDefFoundError
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]