2010-12-28 5 views
4

J'ai un projet à l'aide des formulaires, il compile et fonctionne très bien, mais si compilé avec la ant généré ne fonctionne pasAnt build pour GUI IntelliJ IDEA-forme

mon dossier de fourmi a le java2 tâche et j'ai ajouté les pots nécessaires à mon dossier 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"/> 

mais quand je lance mon programme, je reçois l'erreur suivante:

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) 

J'ai remarqué que la version compilée à partir de l'Idée a quelques classes dans le dossier de sortie (ce qui manque) alors que la version générée par ant ne possède pas ces classes.

EDIT: i implémenté la solution d'en bas, cela signifie que je modifié mon fourmi construire pour en extraire le contenu de forms_rt.jar à mon dossier de sortie

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

Répondre

6

Vous devez inclure forms_rt.jar de IDEA_HOME \ Redist dans le classpath de votre application, soit via le manifeste ou en décompressant les classes de ce pot et les empaquetant avec le dernier jar de votre application. Lorsque vous compilez à partir d'IDEA, il copie automatiquement les classes requises dans la sortie (il est contrôlé via une option dans Paramètres | GUI Designer).

+0

merci, est allé avec la solution de déballage et il fonctionne magnifiquement – Ha11owed