2016-05-04 6 views
0

Ich mache ein dynamisches Webprojekt, das die Verwendung einer externen JAR-Datei erfordert. Dieses Jar verwendet mehrere JNI-Dateien. Jetzt habe ich das Glas und alle erforderlichen Dateien. Ich habe das jar zum java build path hinzugefügt, aber ich bin mir nicht sicher, wie ich die so Dateien auf den tomcat server einführen soll.JNI-Dateien auf einem dynamischen Webprojekt (Apache Tomcat Server) verwenden

habe ich versucht, das Hinzufügen Pfad zu der so Datei als "LD_LIBRARY_PATH":

(Eigenschaften-> Ausführen/Debug Einstellungen-> Bearbeiten-> Umfeld-> Wählen) und auch den Pfad Hinzufügen zu „java .library.path "(Führen Sie As-> RunConfigurations-> Tomcat v8 Server-> Argumente-> VM Argumente) Flag.

Noch ist es nicht funktioniert, ich bin unten Fehler bekommen, wann immer der mein Code auf Zugriffsfunktionen versuchen/Klassen aus dem oben genannten Glas:

SCHWEREN: Servlet.service() für servlet [org.iodity.simulator.agent.LaunchSimulator] im Kontext mit dem Pfad [/ SimulatorAgent] hat eine Exception ausgelöst [Servlet-Ausführung hat eine Exception ausgelöst] mit der Ursache java.lang.ClassNotFoundException: org.oic.simulator.server.SimulatorResource Geben Sie org.apache.catalina.loader.WebappClassLoaderBase.loadClass (Weba ppClassLoaderBase.java:1305) bei org.apache.catalina.loader.WebappClassLoaderBase.loadClass (WebappClassLoaderBase.java:1139) bei org.iotivity.simulator.agent.LaunchSimulator.doPost (LaunchSimulator.java:86) bei org.iotivity.simulator.agent.LaunchSimulator.doGet (LaunchSimulator.java:45) bei javax.servlet.http.HttpServlet.service (HttpServlet.java:622) bei javax.servlet.http.HttpServlet.service (HttpServlet .java-: 729) bei org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:292) bei org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:207) bei org.apache.tomcat.websocket.server.WsFilter.doFilter (WsFilter.java:52) bei org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:240) bei org.apache.catalina .core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:207) bei org.apache.catalina.core.StandardWrapperValve.invoke (StandardWrapperValve.java:212) bei org.apache.catalina.core.StandardContextValve.invoke (StandardContextValve .java: 106) um org.apache.catalina.authenticator.AuthenticatorBase.invoke (AuthenticatorBase.java:502) um org.apache.catalina.core.StandardHostValve.invo ke (StandardHostValve.java:141) bei org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:79) bei org.apache.catalina.valves.AbstractAccessLogValve.invoke (AbstractAccessLogValve.java:616) bei org.apache.catalina.core.StandardEngineValve.invoke (StandardEngineValve.java:88) bei org.apache.catalina.connector.CoyoteAdapter.service (CoyoteAdapter.java:522) bei org.apache.coyote .http11.AbstractHttp11Processor.process (AbstractHttp11Processor.java:1095) um org.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.Prozess (AbstractProtocol.java:672) bei org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.doRun (NioEndpoint.java:1502) bei org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor. run (NioEndpoint.java:1458) bei java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1142) bei java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:617) bei org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run (TaskThread.java:61) bei java.lang.Thread.run (Thread.java:745)

Ich habe den gleichen Code mit einer einfachen Java-Anwendung versucht, und es funktioniert gut, indem Sie die Variable LD_LIBRARY_PATH festlegen.

Jeder Vorschlag wird sehr geschätzt.

+0

Hallo Muschiquel, willkommen in SO. Könnten Sie sich ansehen, wie Sie Ihre Frage besser formatieren könnten? Es wäre großartig für die Gemeinschaft. –

+0

Es sieht so aus, als sei die JAR-Datei nicht in der Webanwendung bereitgestellt worden. Überprüfen Sie den Inhalt von WEB-INF/lib für die bereitgestellte Anwendung, um festzustellen, ob die JAR vorhanden ist. –

+0

@MarkThomas: Danke für deinen Vorschlag. Mein Webdienst sollte eigentlich nur ein Dienst ohne Benutzeroberfläche sein. Also gab es keinen WEB-INF-Ordner. Ich habe den Ordner erstellt und das jar und die so Dateien in WEB-INF/lib abgelegt. Jetzt ist mein vorheriges Problem gelöst. Aber immer noch kann es die so Dateien nicht finden: "kann keine gemeinsame Objektdatei öffnen: Keine solche Datei oder Verzeichnis" –

Antwort

0

Ihr Fehler ist ein ClassNotFoundException, der vorschlagen würde, dass die JAR nicht ordnungsgemäß enthalten ist. Wenn ein Problem mit der systemeigenen Bibliothek aufgetreten ist, erhalten Sie stattdessen eine UnsatisfiedLinkError. Um das JAR für Tomcat verfügbar zu machen, müssen Sie es dem Klassenpfad (-classpath=/path/to/your.jar) hinzufügen oder in Ihren WAR einfügen. Letzteres hängt von Ihrem Build-System ab, aber wenn Sie Maven verwenden, ist es ziemlich einfach, das maven-shade-plugin zu verwenden (das funktioniert nur für das JAR, den systemeigenen Code müssen Sie separat weiter verteilen). Ich hoffe, das hilft!