Gewusst wie: hinzufügen von JAR-Bibliotheken in den KRIEG Projekt, ohne mit java.lang."ClassNotFoundException? Classpath vs Build Path vs /WEB-INF/lib
Wie sollte ich hinzufügen JAR-Bibliotheken zu einem KRIEG-Projekt in Eclipse ohne mit java.lang.ClassNotFoundException
oder java.lang.NoClassDefFoundError
?
Den CLASSPATH
Umgebungsvariable nicht zu funktionieren scheint. In einigen Fällen fügen wir die JAR-Dateien im Build Path Eigentum von Eclipse-Projekt, um den code zu kompilieren. Wir manchmal brauchen, um JAR-Dateien innerhalb /WEB-INF/lib
Ordner, der die Java EE web-Anwendung, um den code zur Ausführung auf Klassen innerhalb, JAR.
Ich nicht genau verstehen, warum CLASSPATH
nicht funktioniert und in welchen Fällen sollten wir hinzufügen, Gläser Build Path und wenn genau diese Gläser sollten gestellt werden in /WEB-INF/lib
.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den
CLASSPATH
Umgebungsvariable ist nur von derjava.exe
Befehl und auch dann nur, wenn verwendet, ohne die-cp
,-classpath
,-jar
Argumente. Es wird ignoriert von IDEs wie Eclipse, Netbeans und IDEA. Siehe auch java.lang.ClassNotFoundException trotz der Verwendung von Umgebungsvariablen CLASSPATH.Den Build Path ist nur für Bibliotheken, die erforderlich sind, um das Projekt den code zu kompilieren. Das manuelle platzieren Sie den Behälter in
/WEB-INF/lib
oder Einstellung der - Bereitstellung Baugruppe, oder indem man ein externes build-system wie Maven Ort der<dependency>
als JAR in/WEB-INF/lib
produziert von KRIEG, während dem bauen, ist nur für Bibliotheken, die erforderlich sind, um den code zu erhalten, zu implementieren und auszuführen, die auf der Ziel-Umgebung zu. Bitte beachten Sie, dass Sie sind eigentlich nicht auf Unterordner erstellen, in/WEB-INF/lib
. Die Gläser haben in der Wurzel.Einige Bibliotheken sind bereits durch die Ziel-Java EE-server oder servletcontainer, z.B. JSP, Servlet, EL, usw. So brauchen Sie nicht, setzen Sie Gläser von den Bibliotheken in
/WEB-INF/lib
. Außerdem würde es nur dazu führen, dass zum laden von Klassen Probleme. Es ist ausreichend, um (indirekt) geben Sie in Build Path nur. In Eclipse, die Sie normalerweise tun, dass durch die Einstellung der Gezielte Laufzeit entsprechend. Es wird automatisch am Ende in Build Path. Siehe auch Wie kann ich importieren Sie die javax.servlet-API in mein Eclipse-Projekt?Anderen Bibliotheken, in der Regel 3rd-party-Pakete wie Apache Commons, JDBC-Treiber und standard-Bibliotheken nicht mit dem Ziel servletcontainer (z.B. Tomcat nicht unterstützt JSF, CDI, JPA, EJB, etc. aus dem Feld), müssen am Ende in
/WEB-INF/lib
. Sie müssen nicht unbedingt benötigen, geben Sie es in Build Path. Nur vielleicht, wenn Sie bereits haben es als User-Library, aber Sie sollen dann - Bereitstellung Baugruppe Einstellung für diese. Siehe auch ClassNotFoundException bei der Verwendung von User-Bibliotheken in Eclipse build path.Falls Sie mit Maven, dann müssen Sie unbedingt darauf achten, dass Sie daneben Bibliotheken als
<scope>provided</scope>
wenn diese bereits von der Ziel-Laufzeitumgebung an, wie z.B. Java EE, Servlets, EL, etc in Fall, dass Sie bereitstellen, um WildFly, TomEE, etc. Auf diese Weise werden Sie nicht am Ende in/WEB-INF/lib
produziert von KRIEG (und verursachen möglicherweise Konflikte mit server-Bibliotheken gebündelt), aber Sie werden am Ende in Eclipse ist Build Path (und den Projekt-code zu kompilieren).Diese JARs in den build-Pfad verwiesen wird, für das erstellen (kompilieren) Prozess nur. Wenn Sie exportieren Sie Ihre Web-Anwendung sind Sie nicht in der final war (es zu versuchen).
Wenn Sie die Gläser zur Laufzeit müssen Sie legen Sie Sie in WEB-INF/lib oder die server-classpath. Platzieren Sie Ihre Gläser in der server-classpath macht nur dann Sinn machen, wenn mehrere Kriege teilen sich eine gemeinsame code-Basis und haben, die Notwendigkeit, Zugriff auf gemeinsame Objekte (z.B. Singletons).
Wenn Sie Maven:
Öffnen Sie das Projekt, Eigenschaften, und unter - Bereitstellung Baugruppe klicken Sie auf Hinzufügen...
Wählen Sie dann Java Build Path-Einträge und wählen Sie Maven-Abhängigkeiten
Möchte ich die Antwort geben, für den folgende link Frage ClassNotFoundException oracle.jdbc.- Treiber.OracleDriver nur im servlet mit Eclipse
Ans: In Myeclipse gehen Server-->mit der linken Maustaste auf Myeclipse Tomcat7-->Konfigurieren von Server-Connector-->(Erweitern)Myeclipse Tomcat7--> Pfade-->Voranstellen, um classpath-->Hinzufügen von jar (add oracle14 jar)-->ok