Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / javafx+swing NoClassDefFoundError / 9 сообщений из 9, страница 1 из 1
08.01.2015, 00:47
    #38849975
worker7
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
javafx+swing NoClassDefFoundError
Пытаюсь добавить 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
08.01.2015, 11:14
    #38850061
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
javafx+swing NoClassDefFoundError
worker7,

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

А под какой версией JDK запускаете?
http://stackoverflow.com/questions/10888367/compiling-and-running-with-javafx-2-1
В ранних билдах, действительно, нужно было JavaFX Runtime отдельно в classpath прописывать.
...
Рейтинг: 0 / 0
08.01.2015, 13:26
    #38850131
worker7
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
javafx+swing NoClassDefFoundError
BlazkowiczА под какой версией JDK запускаете?
JAVA_HOME=C:\Program Files\Java\jdk1.7.0_60
...
Рейтинг: 0 / 0
08.01.2015, 13:28
    #38850132
worker7
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
javafx+swing NoClassDefFoundError
В фале javafx.properties укзана версия JavaFX:
Код: sql
1.
javafx.runtime.version=2.2.60
...
Рейтинг: 0 / 0
08.01.2015, 13:33
    #38850136
worker7
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
javafx+swing NoClassDefFoundError
По поводу http://stackoverflow.com/questions/10888367/compiling-and-running-with-javafx-2-1
ключ -cp для запуска jar файлов не работает вроде, там пути нужно в манифесте прописывать, насколько я знаю. Пробовал распаковать jar и поменять манифест в ручную, но видимо я что-то неправильно писал - т.к. не помоголо.
...
Рейтинг: 0 / 0
08.01.2015, 13:35
    #38850137
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
javafx+swing NoClassDefFoundError
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
08.01.2015, 14:03
    #38850153
worker7
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
javafx+swing NoClassDefFoundError
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
Форумы / Java [игнор отключен] [закрыт для гостей] / javafx+swing NoClassDefFoundError / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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