Сборка Ant для форм Intellij-IDEA GUI - PullRequest
4 голосов
/ 28 декабря 2010

У меня есть проект, использующий формы, он компилируется и работает просто отлично, но при компиляции с сгенерированным муравьем он не запускается

мой файл муравья имеет java2task и я добавил необходимые фляги в мою папку lib

  <property name="javac2.home" value="lib/idea"/>
  <path id="javac2.classpath">
    <pathelement location="${javac2.home}/javac2.jar"/>
    <pathelement location="${javac2.home}/jdom.jar"/>
    <pathelement location="${javac2.home}/asm.jar"/>
    <pathelement location="${javac2.home}/asm-commons.jar"/>
    <pathelement location="${javac2.home}/jgoodies-forms.jar"/>
  </path>
  <taskdef name="javac2" classname="com.intellij.ant.Javac2" classpathref="javac2.classpath"/>
  <taskdef name="instrumentIdeaExtensions" classname="com.intellij.ant.InstrumentIdeaExtensions" classpathref="javac2.classpath"/>

, но когда я запускаю свою программу, я получаю следующую ошибку:

Exception in thread "main" java.lang.NoClassDefFoundError: com/intellij/uiDesigner/core/Spacer
Caused by: java.lang.ClassNotFoundException: com.intellij.uiDesigner.core.Spacer
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:248)

Я заметил, что версияу скомпилированного из Idea есть несколько классов в выходной папке (чего не хватает), в то время как версия, сгенерированная муравьем, не имеет этих классов.

РЕДАКТИРОВАТЬ: я реализовал решение снизу, это означает, что я изменил мою сборку муравьяизвлечь содержимое файла forms_rt.jar в мою выходную папку

<unjar src="${javac2.home}/forms_rt.jar" dest="${webserver.output.dir}">
          <patternset>
              <include name="**/*.class"/>
          </patternset>
</unjar>

1 Ответ

6 голосов
/ 28 декабря 2010

Вам необходимо включить forms_rt.jar из IDEA_HOME \ redist в путь к классу вашего приложения, либо через манифест, либо путем распаковки классов из этого jar и упаковки их вместе с окончательным jar вашего приложения.

Когда вы компилируете из IDEA, он автоматически копирует требуемые классы в вывод (это контролируется с помощью параметра в меню «Настройки» | GUI Designer).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...