2016-09-02 5 views
-1

Ich arbeite an SAML SSO-Authentifizierung. Ich habe ein Servlet erstellt, um SAML-Metadaten zu generieren, und ich habe es bereitgestellt und ausgeführt, und ich habe die Ausgabe erhalten. Gleichzeitig habe ich eine Java-Klasse erstellt, um SAML-Metadaten mit dem gleichen Code zu generieren, und habe versucht, sie unabhängig auszuführen. Ich habe die gleichen Jar-Dateien hinzugefügt, die ich für diese Servlet-Anwendung verwendet habe. Aber ich habe die Ausnahme unten gegeben. Kann mir jemand helfen, den Unterschied zwischen dem Ausführen einer Anwendung unabhängig und mithilfe von Java-Servlet zu finden? Vielen Dank im Voraus.funktioniert als Servlet, aber nicht als Java-Klasse. Warum?

Ausnahme:

Click here to see the Exception

+0

können Sie Code-Snippet buchen? –

+0

hast du die slf4j jars zu deinem standalone-programm hinzugefügt? Es scheint, dass es für die Protokollierung verwendet wird. –

+0

Scheint, dass Sie hier verschiedene Klassenpfade haben. Sie haben hier eine andere Logback-Bibliothek. –

Antwort

1

Laufen als Servlet in einem Web-Container bedeutet, dass alle möglichen Sachen auf dem Classpath ist, die automatisch vom Servlet-Container vorgesehen ist.

Wenn Sie main() verwenden, müssen Sie alle benötigten Daten selbst auf den Klassenpfad setzen. Die ClassNotFoundException, die Sie erhalten, sollte in dieser Hinsicht klar genug sein.

(Bitte beachten Sie, dass, obwohl ich "den" Klassenpfad sagte, in einem Servlet-Container sind die Dinge in der Regel nicht ganz so einfach. Aber das ist nicht der Punkt. Beachten Sie auch, dass als Servlet ausgeführt wird, und Funktionen der Bibliotheken für verwendet der Container, kann sogar bedeuten, Ihre Sachen kann nicht laufen als ein unabhängiges Java-Programm, einfach weil die Bibliothek Sachen absichtlich für Servlet-Container ausschließlich verwendet wurde.)

+0

Ich habe genau die gleichen JAR-Dateien hinzugefügt, die ich in der Webanwendung verwendet habe. Anders als nur diese JAR-Dateien hinzufügen, wie werde ich den Klassenpfad für die eigenständige Anwendung konfigurieren. Bitte um Rat. –

+0

Und durchsuchen Sie den Inhalt der Gläser, die Sie hinzugefügt haben, können Sie die org/slf4j/impl/MessageFormatter.class-Datei finden? –

Verwandte Themen