2010-12-28 2 views
4

У меня есть проект, используя форму, он компилирует и работает просто отлично, но при компиляции с генерируемого муравьем он не работаетAnt сборки для графического интерфейса пользователя Intellij-IDEA формы

мой муравей файл имеет java2 задача и я добавил необходимые баночки моей 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, имеет некоторые классы в выходной папке (чего не хватает), в то время как у сгенерированной версии ant нет этих классов.

EDIT: я реализовал решение снизу, это означает, что я изменил мой муравей строить, чтобы извлечь содержимое forms_rt.jar в моей папке вывода

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

ответ

6

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

При компиляции из IDEA он автоматически копирует требуемые классы в выходной файл (он контролируется с помощью опции в Настройках | GUI Designer).

+0

спасибо, пошел с распаковкой, и он прекрасно работает – Ha11owed