Problema ao gerar arquivo.jar executável com Ant

2 respostas
jamesfrj

Pessoal, estou gerando um jar com o Ant, mas quando tento executá-lo via linha de comando ocorre o seguinte erro:

Exception in thread "main" java.lang.NoClassDefFoundError: com/nilo/plaf/nimrod/
NimRODLookAndFeel
Caused by: java.lang.ClassNotFoundException: com.nilo.plaf.nimrod.NimRODLookAndF
eel
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
Could not find the main class: br.com.projetos.clm.ui.CorrectorUI. Program will
exit.

Segue o meu build.xml

<?xml version="1.0" encoding="UTF-8"?>
	<project name="corrector-logic-model" default="executar">
	<description>Corretor de modelos lógicos do Erwin</description>
		
	<target name="compilar">
		<delete dir="bin"/>
		<mkdir dir="bin"/>
		<copy todir="bin">
   			<fileset dir="src/main/java" includes="*.properties"/>					
		</copy>	
		
		<mkdir dir="lib"/>
		<copy todir="lib">
   			<fileset dir="lib" includes="*.jar" />		
		</copy>		
		
		<javac srcdir="src/main/java" destdir="bin"> 
			<classpath>
				<fileset dir="lib">
					<include name="*.jar"/>
				</fileset>
			</classpath>
		</javac>
		
	</target>

		
	<target name="empacotar" depends="compilar">
		<mkdir dir="jar" />
		<jar destfile="jar/clm.jar" 
			basedir="bin">
			<manifest>
				<attribute name="Main-Class" value="br.com.projetos.clm.ui.CorrectorUI" />
	  		</manifest>			
		</jar>	
	</target>

	<target name="executar" depends="empacotar">
		<java classname="br.com.projetos.clm.ui.CorrectorUI" fork="true">			
			<classpath>
				<filelist files="jar/clm.jar" />
				<fileset dir="lib">
					<include name="*.jar" />
				</fileset>
			</classpath>
		</java>
	</target>
</project>
Alguém tem alguma dica ?

2 Respostas

Eduardo.anjo

Estou enfrentando o mesmo problema, alguém pode ajusar?

jamesfrj

Fala Eduardo, blz?

Quando mudei os meus target empacotar conforme abaixo funcionou:

<target name="empacotar" depends="compilar">
		<mkdir dir="jar" />
 
		<jar destfile="jar/clm.jar" filesetmanifest="mergewithoutmain">
            <manifest>
                <attribute name="Main-Class" value="br.com.projetos.clm.ui.CorrectorUI"/>
                <attribute name="Class-Path" value="."/>
            </manifest>
            <fileset dir="bin"/>
            <zipfileset excludes="META-INF/*.SF" src="lib/junit-4.10.jar"/>
            <zipfileset excludes="META-INF/*.SF" src="lib/nimrodlf-1.2.jar"/>
        </jar>		
	</target>
Creio que a definição do manifest resolveu meu problema.

Espero ter ajudado.

Criado 5 de março de 2013
Ultima resposta 19 de jun. de 2013
Respostas 2
Participantes 2