[Java] NoClassDefFoundError: org/aspectj/lang/Signature

Pagina: 1
Acties:
  • 301 views sinds 30-01-2008
  • Reageer

  • sig69
  • Registratie: Mei 2002
  • Laatst online: 18:32
Ik heb een simpele applicatie gemaakt die gebruik maakt van een MySQL database. Als ik deze vanuit Eclipse start werkt alles goed, maar als ik de packaged versie start krijg ik deze foutmelding:
code:
1
2
3
java.lang.NoClassDefFoundError: org/aspectj/lang/Signature
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Unknown Source)

Op het moment dat ik deze regel code aanroep:
Java:
1
Class.forName("com.mysql.jdbc.Driver");

Ik ben er 99% zeker van dat m'n classpath goed is, deze wordt zo opgebouwd:
code:
1
2
3
4
5
6
7
8
set LIBRARIES=./lib/mysql-connector-java-3.1.12-bin.jar
set LIBRARIES=%LIBRARIES%;./lib/log4j.jar
set LIBRARIES=%LIBRARIES%;./lib/jbossall-client.jar
set LIBRARIES=%LIBRARIES%;MySQLCompare.jar

set CLASSPATH=.;%CLASSPATH%;%LIBRARIES%

java -classpath %CLASSPATH% saen.mysqlcompare.CompareMain

Logging werkt wel gewoon, dus de padnaam is gewoon goed lijkt me.

Oplossingen die ik al gevonden heb (en die niet werken):
• aspectjrt.jar in classpath opnemen
• deze fout komt vaak voor als de debugversie van de mysql connector gebruikt wordt, dat is dus niet het geval
• laatste versie van de mysql connector (3.1.12) gebruiken (ik gebruikte eerst nog 3.1.8)
• mysql-connector-java-3.1.12-bin.jar in j2sdk1.4.2_08\jre\lib\ext zetten (hoort niet, maar goed)

Ik snap het niet meer, iemand nog tips?

Edit:
Ik kwam zojuist nog een debug-versie tegen in j2sdk1.4.2_08\lib. Verwijderd, maar werkt nog steeds niet...

[ Voor 6% gewijzigd door sig69 op 26-04-2006 11:54 ]

Roomba E5 te koop


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Het is vreemd dat er een afhankelijkheid is naar aspectj (ik gebruik mysql icm mysqconnector ook regelmatig en heb nog nooit een aspectj jar hoeven toe te voegen). Ik gebruik zelf:
mysql-connector-java-3.0.14-production-bin.jar
en
mysql-connector-java-3.1.10-bin.jar

  • bodiam
  • Registratie: December 2001
  • Laatst online: 31-12-2024
Als je jars gebruikt, kun je geen extra classpath opgeven. Het enige wat je kunt doen is een custom classloader gebruiken (bijvoorbeeld one-jar), of de driver lib in dezelfde directory zetten als je gepackagede jar. Kortom: zet de jars niet in die lib dir, maar in dezelfde dir, en het zal wel werken.

[ Voor 17% gewijzigd door bodiam op 26-04-2006 23:04 ]


  • sig69
  • Registratie: Mei 2002
  • Laatst online: 18:32
Alarmnummer schreef op woensdag 26 april 2006 @ 21:14:
Het is vreemd dat er een afhankelijkheid is naar aspectj...
Dat vind ik ook..
Ik gebruik zelf:
mysql-connector-java-3.0.14-production-bin.jar
en
mysql-connector-java-3.1.10-bin.jar
Ik heb al 5 versies geprobeerd ondertussen, maar elke keer hetzelfde. Aan de versie ligt het dus niet.
bodiam schreef op woensdag 26 april 2006 @ 23:03:
Als je jars gebruikt, kun je geen extra classpath opgeven. Het enige wat je kunt doen is een custom classloader gebruiken (bijvoorbeeld one-jar), of de driver lib in dezelfde directory zetten als je gepackagede jar. Kortom: zet de jars niet in die lib dir, maar in dezelfde dir, en het zal wel werken.
Dit snap ik niet helemaal. We hebben hier zat applicaties die diverse jars gebruiken, nergens problemen mee. Waarom werkt het dan aleen met de mysql connector niet?

[ Voor 14% gewijzigd door sig69 op 27-04-2006 11:04 ]

Roomba E5 te koop


Verwijderd

Misschien ff handig om google te gebruiken

http://www.google.nl/sear...rg.mozilla:en-US:official

eerste hit heeft het zelfde probleem als jij... ik heb het niet gelezen maar mij lijkt dat je met google wel tot een oplossing gaat komen

  • sig69
  • Registratie: Mei 2002
  • Laatst online: 18:32
Geloof me, ik heb al aardig wat uurtjes google hierin zitten maar alle oplossingen tot nu toe werken niet.

Edit: ik heb even de allersimpelstse test gedaan die er is:

1 simpele class:
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class MySQLTestMain
{
    public static void main(String[] args)
    {
        try
        {
            Class.forName("com.mysql.jdbc.Driver");
            System.out.println("Succes!");
        }
        catch (ClassNotFoundException e)
        {
            System.out.println("Error");
            System.out.println(e.getStackTrace());
        }
    }
}

Dit build ik naar een jar, en zet i in dezelfde map als mysql-connector-java-3.1.12-bin.jar. Ik heb nu dus in 1 map staan:
• MySQLTest.jar
• mysql-connector-java-3.1.12-bin.jar

Nu run ik het hele zooitje met als resultaat:
code:
1
2
3
4
5
6
7
C:\EclipseWorkspace\MySQLTest\build>java -cp MySQLTest.jar;mysql-connector-java-
3.1.12-bin.jar MySQLTestMain
Exception in thread "main" java.lang.NoClassDefFoundError: org/aspectj/lang/Sign
ature
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Unknown Source)
        at MySQLTestMain.main(MySQLTestMain.java:16)

Ook nog getest met apsectjrt.jar erbij, niks hoor...

Schiet mij maar in een boom.. 8)7

Edit 2:
Ik probeerde zojuist de applicatie op een andere computer te draaien (had ik natuurlijk al veel eerder moeten doen..) en daar doet ie het WEL! Maw: het ligt aan mijn systeem! Iemand enig idee waar dit zou kunnen zitten? Ik draai gewoon een standaard install van 1.4.2_08. Voor de zekerheid even opnieuw installeren maar...

Edit 3:
Voor als iemand hier nog een keer naar zoekt: een herinstallatie van java heeft het probleem opgelost. Vraag me niet wat er fout zat, maar het werkt nu.

[ Voor 107% gewijzigd door sig69 op 27-04-2006 13:03 ]

Roomba E5 te koop


Verwijderd

Moeilijk om nu nog terug te vinden, maar je had er misschien ook nog een extra mysql jar in je jre\lib hangen. Heb je ook voor de lol eens geprobeerd om je CLASSPATH te echo-en, om te zien welke jars er nog meer instonden?

  • sig69
  • Registratie: Mei 2002
  • Laatst online: 18:32
Verwijderd schreef op donderdag 27 april 2006 @ 15:40:
Moeilijk om nu nog terug te vinden, maar je had er misschien ook nog een extra mysql jar in je jre\lib hangen. Heb je ook voor de lol eens geprobeerd om je CLASSPATH te echo-en, om te zien welke jars er nog meer instonden?
In jre/lib stond er inderdaad een, maar die had ik verwijderd (zie een paar posts terug) en daarna werkte het nog steeds niet. Overigens heb ik de hele computer doorsgezocht op mysq-connector*.jar, en vond verder niets vreemds. Classpath echo'en heb ik alleen niet gedaan nee, jammer.

Roomba E5 te koop

Pagina: 1