Jeg har skrevet et program, og eksporteret det som en jar fil. Når jeg prøver at køre .jar filen med:
java -jar ircbot.jar
for jeg fejlen:
Exception in thread "main" java.lang.NoClassDefFoundError: org/jibble/pircbot/PircBot
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$000(Unknown Source)
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)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
at MyBotMain.main(MyBotMain.java:5)
Caused by: java.lang.ClassNotFoundException: org.jibble.pircbot.PircBot
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)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
... 13 more
Programmet virker fint når jeg køre det fra mit IDE(eclipse)
Mit IDE laver en .project en .classpath og en MANIFEST.MF(som den liggern ind i en mappe ved navn META-INF.
Her er hvad de indeholder:
META-INF/MANIFEST.MF
Manifest-Version: 1.0
Main-Class: MyBotMain
.classpath
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="lib" path="C:/pircbot/pircbot.jar"/> //<--?? (nok ikke en rigtig XML comment :P)
<classpathentry kind="output" path="bin"/>
</classpath>
læg mærke til den linje jeg har kommenteret. Den hanviser til den .jar fil, hvor den klasse den ikke kan finde ligger i.
.project
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>IRCBot</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>
For mig ser det ud som om, at eclipse bruger en eller anden parametre i javaw der gør den kan finde den eksterne klasse.
Håber der er nogle der kan hjælpe.