2017-04-11 3 views
0

Ich arbeite an einem Projekt, wo ich zwei Module habe, eines ist ein Web-Modul, das Client-Operationen und ein Java-Modul, das eine andere Verarbeitung verarbeiten wird und wird auch eine eingebettete Jetty initialisieren mit dem Krieg aus dem Web-Modul erstellt. Ich benutze Intellij für die Entwicklung.Erstellen eines Projekts mit Java und Web-Modul

Hier sind die Modulinformationen:

WebServiceViewer 
     | 
     --> CoreService - java module 
     --> ClientDashboard - web module (doesn't have pom as created as web project) 

ich eine Abhängigkeit von coreservice auf ClientDashboard hinzugefügt haben. Aber wenn ich den Klassenpfad drucke, sehe ich die WAR-Datei nicht im Klassenpfad.

Hier sind meine pom.xml-Dateien. Webprojekt pom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>webviewer</groupId> 
    <artifactId>service-viewer</artifactId> 
    <packaging>pom</packaging> 
    <version>1.0-SNAPSHOT</version> 

    <modules> 
     <module>ClientDashboard</module> 
     <module>CoreService</module> 
    </modules> 
</project> 

coreservice pom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <parent> 
     <artifactId>service-viewer</artifactId> 
     <groupId>webviewer</groupId> 
     <version>1.0-SNAPSHOT</version> 
    </parent> 
    <modelVersion>4.0.0</modelVersion> 

    <artifactId>server-handler</artifactId> 
    <packaging>pom</packaging> 

    <properties> 
     <spring.version>4.3.6.RELEASE</spring.version> 
     <spring.version.agent>2.5.6</spring.version.agent> 
    </properties> 

    <dependencies> 

     <dependency> 
      <groupId>webviewer</groupId> 
      <artifactId>client-dashboard</artifactId> 
      <version>1.0-SNAPSHOT</version> 
      <type>war</type> 
     </dependency> 

     <dependency> 
      <groupId>org.eclipse.jetty</groupId> 
      <artifactId>jetty-server</artifactId> 
      <version>9.3.6.v20151106</version> 
     </dependency> 

     <dependency> 
      <groupId>org.eclipse.jetty</groupId> 
      <artifactId>jetty-util</artifactId> 
      <version>9.3.6.v20151106</version> 
     </dependency> 

     <dependency> 
      <groupId>org.eclipse.jetty</groupId> 
      <artifactId>jetty-servlet</artifactId> 
      <version>9.3.6.v20151106</version> 
     </dependency> 

     <dependency> 
      <groupId>org.eclipse.jetty</groupId> 
      <artifactId>jetty-webapp</artifactId> 
      <version>9.3.6.v20151106</version> 
     </dependency>  
    </dependencies> 

</project> 

ClientDashboard pom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>webviewer</groupId> 
    <artifactId>client-dashboard</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <packaging>war</packaging> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-war-plugin</artifactId> 
       <configuration> 
        <webXml>ClientDashBoard\web\WEB-INF\web.xml</webXml> 
       </configuration> 
      </plugin> 

     </plugins> 
    </build> 
</project> 

Hier ist meine Java-Klasse, die Ich benutze, um den Klassenpfad zu drucken und was ich sein werde Verwenden, um Anlegesteg mit Webkrieg zu starten. EntryMain.java public class EntryMain {

public static void main(String[] args) { 
    EntryMain entryPoint = new EntryMain(); 
    ClassLoader cl = ClassLoader.getSystemClassLoader(); 

    URL[] urls = ((URLClassLoader)cl).getURLs(); 

    for(URL url: urls){ 
     System.out.println(url.getFile()); 
    } 
} 

}

Hier ist die Ausgabe meiner Classpath:

/C:/Program%20Files/Java/jdk1.8.0_121/jre/lib/charsets.jar 
/C:/Program%20Files/Java/jdk1.8.0_121/jre/lib/deploy.jar 
/C:/Program%20Files/Java/jdk1.8.0_121/jre/lib/ext/access-bridge-64.jar 
/C:/Program%20Files/Java/jdk1.8.0_121/jre/lib/ext/cldrdata.jar 
/C:/Program%20Files/Java/jdk1.8.0_121/jre/lib/ext/dnsns.jar 
/C:/Program%20Files/Java/jdk1.8.0_121/jre/lib/ext/jaccess.jar 
/C:/Program%20Files/Java/jdk1.8.0_121/jre/lib/ext/jfxrt.jar 
/C:/Program%20Files/Java/jdk1.8.0_121/jre/lib/ext/localedata.jar 
/C:/Program%20Files/Java/jdk1.8.0_121/jre/lib/ext/nashorn.jar 
/C:/Program%20Files/Java/jdk1.8.0_121/jre/lib/ext/sunec.jar 
/C:/Program%20Files/Java/jdk1.8.0_121/jre/lib/ext/sunjce_provider.jar 
/C:/Program%20Files/Java/jdk1.8.0_121/jre/lib/ext/sunmscapi.jar 
/C:/Program%20Files/Java/jdk1.8.0_121/jre/lib/ext/sunpkcs11.jar 
/C:/Program%20Files/Java/jdk1.8.0_121/jre/lib/ext/zipfs.jar 
/C:/Program%20Files/Java/jdk1.8.0_121/jre/lib/javaws.jar 
/C:/Program%20Files/Java/jdk1.8.0_121/jre/lib/jce.jar 
/C:/Program%20Files/Java/jdk1.8.0_121/jre/lib/jfr.jar 
/C:/Program%20Files/Java/jdk1.8.0_121/jre/lib/jfxswt.jar 
/C:/Program%20Files/Java/jdk1.8.0_121/jre/lib/jsse.jar 
/C:/Program%20Files/Java/jdk1.8.0_121/jre/lib/management-agent.jar 
/C:/Program%20Files/Java/jdk1.8.0_121/jre/lib/plugin.jar 
/C:/Program%20Files/Java/jdk1.8.0_121/jre/lib/resources.jar 
/C:/Program%20Files/Java/jdk1.8.0_121/jre/lib/rt.jar 
/C:/Users/user/IdeaProjects/WebServiceViewer/CoreService/target/classes/ 
/C:/Users/user/.m2/repository/wfs-etrade/web-dash/1.0-SNAPSHOT/web-dash-1.0-SNAPSHOT.war 
/C:/Users/user/.m2/repository/org/eclipse/jetty/jetty-server/9.3.6.v20151106/jetty-server-9.3.6.v20151106.jar 
/C:/Users/user/.m2/repository/javax/servlet/javax.servlet-api/3.1.0/javax.servlet-api-3.1.0.jar 
/C:/Users/user/.m2/repository/org/eclipse/jetty/jetty-http/9.3.6.v20151106/jetty-http-9.3.6.v20151106.jar 
/C:/Users/user/.m2/repository/org/eclipse/jetty/jetty-util/9.3.6.v20151106/jetty-util-9.3.6.v20151106.jar 
/C:/Users/user/.m2/repository/org/eclipse/jetty/jetty-io/9.3.6.v20151106/jetty-io-9.3.6.v20151106.jar 
/C:/Users/user/.m2/repository/org/eclipse/jetty/jetty-servlet/9.3.6.v20151106/jetty-servlet-9.3.6.v20151106.jar 
/C:/Users/user/.m2/repository/org/eclipse/jetty/jetty-security/9.3.6.v20151106/jetty-security-9.3.6.v20151106.jar 
/C:/Users/user/.m2/repository/org/eclipse/jetty/jetty-webapp/9.3.6.v20151106/jetty-webapp-9.3.6.v20151106.jar 
/C:/Users/user/.m2/repository/org/eclipse/jetty/jetty-xml/9.3.6.v20151106/jetty-xml-9.3.6.v20151106.jar 
/C:/Users/user/.m2/repository/org/springframework/spring-core/4.3.6.RELEASE/spring-core-4.3.6.RELEASE.jar 
/C:/Users/user/.m2/repository/commons-logging/commons-logging/1.2/commons-logging-1.2.jar 
/C:/Users/user/.m2/repository/org/springframework/spring-beans/4.3.6.RELEASE/spring-beans-4.3.6.RELEASE.jar 
/C:/Users/user/.m2/repository/org/springframework/spring-context/4.3.6.RELEASE/spring-context-4.3.6.RELEASE.jar 
/C:/Users/user/.m2/repository/org/springframework/spring-aop/4.3.6.RELEASE/spring-aop-4.3.6.RELEASE.jar 
/C:/Users/user/.m2/repository/org/springframework/spring-expression/4.3.6.RELEASE/spring-expression-4.3.6.RELEASE.jar 
/C:/Program%20Files%20(x86)/JetBrains/IntelliJ%20IDEA%202016.2.2/lib/idea_rt.jar 

Was soll ich den generierten Krieg zu dem Classpath zu bringen tun ?

Antwort

0

WAR-Dateien werden niemals im Klassenpfad platziert.

Sie müssen herausfinden, wie Sie die eingebettete Jetty zu deploy die WAR-Datei verwenden.

Als Teil dieses Prozesses wird Jetty einen neuen isolierten Klassenlader mit dem SystemClassLoader erstellen, den Sie als Elternteil (oder Großelternteil oder was auch immer, abhängig davon, wie Jetty funktioniert) ausgegeben haben. Dieser Classloader sucht zuerst nach Klassen, bevor er an den übergeordneten delegiert wird.

+0

Danke für die Antwort. Also, ich brauche eine Möglichkeit, um diese Klasse laden die Datei, die ich bereitstellen möchte. Ich werde Optionen in dieser Richtung erkunden. – kromastorm

+0

Vergessen Sie den Class Loader und lassen Sie Jetty damit arbeiten. –

+0

Ja. Was ich damit meinte war, einen Weg zu finden, den Krieg, der vom Web-Modul erzeugt wurde, an die Konfiguration der Anlegestelle zu übergeben. – kromastorm

Verwandte Themen