Как использовать DukeScript с Eclipse?
Есть ли руководство по использованию DukeScript с Eclipse? Я могу найти только описание для использования с NetBeans.
3 ответа
Теперь я потратил несколько часов, пытаясь запустить проект Dukescript. Не будучи пользователем NetBeans, я создал проект из архетипа Maven, а затем попытался импортировать его в Eclipse. Одна из проблем заключается в том, что m2eclipse смущает плагин html4j-maven-plugin, он не знает, на какой стадии жизненного цикла сборки он должен работать (насколько я понимаю). Итак, я добавил это:
<pluginManagement>
<plugins>
<!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
<plugin>
<groupId>org.eclipse.m2e</groupId>
<artifactId>lifecycle-mapping</artifactId>
<version>1.0.0</version>
<configuration>
<lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.netbeans.html</groupId>
<artifactId>
html4j-maven-plugin
</artifactId>
<versionRange>[1.1,)</versionRange>
<goals>
<goal>process-js-annotations</goal>
</goals>
</pluginExecutionFilter>
<action>
<execute></execute>
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
</configuration>
</plugin>
</plugins>
Теперь m2eclipse не соответствует. Тем не менее, Eclipse не находит классы Data (model), которые генерирует плагин. Поэтому я просто добавил / target / генерируемый-источники / аннотации в исходную папку. Возможно, не самое элегантное решение, должен быть способ сделать это в пом. Итак, ошибок компиляции нет. Тем не менее, когда я запускаю его, я получаю исключение:
Exception in thread "main" java.util.ServiceConfigurationError: org.netbeans.html.boot.spi.Fn$Presenter: Provider org.netbeans.html.boot.fx.FXPresenter could not be instantiated
at java.util.ServiceLoader.fail(ServiceLoader.java:224)
at java.util.ServiceLoader.access$100(ServiceLoader.java:181)
at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:377)
at java.util.ServiceLoader$1.next(ServiceLoader.java:445)
at net.java.html.boot.BrowserBuilder.showAndWait(BrowserBuilder.java:275)
at javelin.Main.main(Main.java:14)
Caused by: java.lang.UnsupportedClassVersionError: javafx/application/Platform : Unsupported major.minor version 52.0
Возможно, это выглядит как несоответствие между целевым байт-кодом и временем выполнения. Я обновлю этот ответ, если выясню.
Обновить
Успех! Я установил источник компиляции Java и цель на 8
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
А также для времени выполнения Java в.project
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
Оставалось сделать еще одну вещь: установить свойство browser.rootdir, чтобы приложение могло находить веб-ресурсы. Просто для тестирования:
String userdir = System.getProperty("user.dir") + "/src/main/webapp";
System.setProperty("browser.rootdir", userdir );
Я могу открыть страницу и запустить анимацию, но не могу ее остановить из-за других ошибок. Во всяком случае, это начало.
Обновление 2
Мне удалось заставить Eclipse обрабатывать аннотации DukeScript и генерировать источники с помощью этого плагина: m2e-apt. Для работы плагина нужно добавить еще одну вещь:
<plugin>
<groupId>org.bsc.maven</groupId>
<artifactId>maven-processor-plugin</artifactId>
<version>2.2.4</version>
<executions>
<execution>
<id>process</id>
<goals>
<goal>process</goal>
</goals>
<configuration>
<outputDirectory>target/generated-sources/annotations</outputDirectory>
</configuration>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.netbeans.html</groupId>
<artifactId>html4j-maven-plugin</artifactId>
<version>${net.java.html.version}</version>
</dependency>
</dependencies>
</plugin>
Эти проблемы аналогичны тем, которые были подняты в ходе проверки юзабилити. Способ обойти такие ошибки компиляции - переключиться в командную строку и выполнить "mvn clean install", которая работает правильно. Конфигурирование Eclipse возможно в некоторой степени, и вы, кажется, нашли правильный путь.
Обновление: я написал краткое руководство. Пожалуйста, дайте мне знать, если это работает для вас, и что нужно улучшить.