2008-09-14 14 views
1

Wir haben eine einfache Spring-Hibernate-Anwendung (Konsolen-App), in der wir den Klassenpfad in der Manifestdatei der ausführbaren JAR-Datei festgelegt haben. Und die App verbindet sich mit der Datenbank mit jtds-Treiber, alles funktioniert wie erwartet auf Windows-Rechner und jdk1.6. Aber unter Linux, die App ist nicht in der Lage, den Treiber zu finden, Wir führen das Programm mit java -jar MainClassNamejtds Keine geeignete Treiberausnahme beim Ausführen eines Maven-Projekts

Alle Vorschläge, warum dies passieren könnte, wird sehr geschätzt.

+0

Welche Fehler sehen Sie? Wenn es sich entweder um eine NoClassDefError- oder eine ClassNotFoundException handelt, handelt es sich wahrscheinlich um ein Klassenpfadproblem. –

Antwort

0

Ehrlich klingt es wie schlechte CLASSPATH. Eine Sache, die ich vorschlagen, dieses Problem zu debuggen, ist, das jtds-Paket in den gleichen Pfad wie die Hauptpakete/-klassen zu kopieren und zu sehen, ob es funktioniert. Auf diese Weise können Sie sicherstellen, dass das Klassenpfadmanifest das Problem ist oder nicht. Spring/Hibernate basiert auf dem Verzeichnis lib. Daher befindet es sich immer im Klassenpfad, da es die Hauptstruktur ist. Verwenden Sie zum Testen auch das lib-Verzeichnis.

Ich hoffe, dass diese Richtlinien helfen. Senden Sie auch weitere Informationen wie Pfade, Klassenpfad und Manifestdateien.

+0

Fernando, Der Klassenpfad wird von Maven in der Manifest-Datei generiert und es funktioniert gut auf Windows-Maschine. Jedenfalls werde ich den Klassenpfadeintrag in der Manifestdatei am Montag veröffentlichen. –

2

Dieses Problem trat auf, weil unsere jdbc.url ungültige URL hatte. Dies lag daran, dass Maven die Eigenschaft jdbc.url als spezielle Eigenschaft und während der Profilerstellung anstelle der in der filter.properties definierten URL behandelt. Und das ist der Grund für die Ausnahme "Kein geeigneter Treiber". Die Frage hätte klarer sein müssen.

Irgendwie zu beheben, dass wir jdbc.url Eigenschaften zu jdbc.url.somename umbenennen mussten. Dies hat unser Problem mit maven profiling behoben. Wir hatten auch ein ähnliches Maven-Profiling-Problem für eine Eigenschaft namens "server.name". Diese Filtereigenschaft verwirrte auch das Maven-Profiling. Wir mussten den Namen dieser Eigenschaft auch ändern.

Danke nochmal Fernando.