Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Maven 不正确的包结构_Maven_Spring Boot_Weblogic_Spring Boot Maven Plugin - Fatal编程技术网

Maven 不正确的包结构

Maven 不正确的包结构,maven,spring-boot,weblogic,spring-boot-maven-plugin,Maven,Spring Boot,Weblogic,Spring Boot Maven Plugin,我正在尝试将部署到web服务器(本例中为weblogic)。我还想在另一个文件夹中添加一些外部依赖项(jar文件)。最终目标是在一个耳朵里部署一场骨瘦如柴的战争 从文档中,我的spring boot maven插件如下所示: <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-

我正在尝试将部署到web服务器(本例中为weblogic)。我还想在另一个文件夹中添加一些外部依赖项(jar文件)。最终目标是在一个耳朵里部署一场骨瘦如柴的战争

从文档中,我的spring boot maven插件如下所示:

<plugins>
    <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <configuration>
            <layout>ZIP</layout>
        </configuration>
    </plugin>
</plugins>
Manifest-Version: 1.0
Implementation-Title: Web
Implementation-Version: 0.0.1-SNAPSHOT
Start-Class: com.poc.WebApplication
Spring-Boot-Classes: WEB-INF/classes/
Spring-Boot-Lib: WEB-INF/lib/
Build-Jdk-Spec: 1.8
Spring-Boot-Version: 2.2.0.RELEASE
Created-By: Maven Archiver 3.4.0
Implementation-Vendor: None
Main-Class: org.springframework.boot.loader.WarLauncher
Manifest-Version: 1.0
Implementation-Title: Web
Implementation-Version: 0.0.1-SNAPSHOT
Start-Class: WEB-INF.classes.com.poc.WebApplication
Spring-Boot-Classes: BOOT-INF/classes/
Spring-Boot-Lib: BOOT-INF/lib/
Build-Jdk-Spec: 1.8
Spring-Boot-Version: 2.2.0.RELEASE
Created-By: Maven Archiver 3.4.0
Implementation-Vendor: None
Main-Class: org.springframework.boot.loader.PropertiesLauncher
清单文件如下所示:

<plugins>
    <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <configuration>
            <layout>ZIP</layout>
        </configuration>
    </plugin>
</plugins>
Manifest-Version: 1.0
Implementation-Title: Web
Implementation-Version: 0.0.1-SNAPSHOT
Start-Class: com.poc.WebApplication
Spring-Boot-Classes: WEB-INF/classes/
Spring-Boot-Lib: WEB-INF/lib/
Build-Jdk-Spec: 1.8
Spring-Boot-Version: 2.2.0.RELEASE
Created-By: Maven Archiver 3.4.0
Implementation-Vendor: None
Main-Class: org.springframework.boot.loader.WarLauncher
Manifest-Version: 1.0
Implementation-Title: Web
Implementation-Version: 0.0.1-SNAPSHOT
Start-Class: WEB-INF.classes.com.poc.WebApplication
Spring-Boot-Classes: BOOT-INF/classes/
Spring-Boot-Lib: BOOT-INF/lib/
Build-Jdk-Spec: 1.8
Spring-Boot-Version: 2.2.0.RELEASE
Created-By: Maven Archiver 3.4.0
Implementation-Vendor: None
Main-Class: org.springframework.boot.loader.PropertiesLauncher

这与ZIP选项有关:

Web-0.0.1-SNAPSHOT.war
├───BOOT-INF
│   ├───classes
│   │   └───WEB-INF
│   │       ├───classes
│   │       │   └───com
│   │       │       └───poc
│   │       │           └───config
│   │       │           └───controller
│   │       └───lib
│   └───lib
├───META-INF
│   └───maven
│       └───com.poc
│           └───Web
└───org
    └───springframework
        └───boot
            └───loader
                ├───archive
                ├───data
                ├───jar
                └───util
清单文件现在如下所示:

<plugins>
    <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <configuration>
            <layout>ZIP</layout>
        </configuration>
    </plugin>
</plugins>
Manifest-Version: 1.0
Implementation-Title: Web
Implementation-Version: 0.0.1-SNAPSHOT
Start-Class: com.poc.WebApplication
Spring-Boot-Classes: WEB-INF/classes/
Spring-Boot-Lib: WEB-INF/lib/
Build-Jdk-Spec: 1.8
Spring-Boot-Version: 2.2.0.RELEASE
Created-By: Maven Archiver 3.4.0
Implementation-Vendor: None
Main-Class: org.springframework.boot.loader.WarLauncher
Manifest-Version: 1.0
Implementation-Title: Web
Implementation-Version: 0.0.1-SNAPSHOT
Start-Class: WEB-INF.classes.com.poc.WebApplication
Spring-Boot-Classes: BOOT-INF/classes/
Spring-Boot-Lib: BOOT-INF/lib/
Build-Jdk-Spec: 1.8
Spring-Boot-Version: 2.2.0.RELEASE
Created-By: Maven Archiver 3.4.0
Implementation-Vendor: None
Main-Class: org.springframework.boot.loader.PropertiesLauncher
当我现在尝试运行战争时,我得到一个错误:

Exception in thread "main" java.lang.NoClassDefFoundError: WEB-INF/classes/com/poc/WebApplication (wrong name: com/poc/WebApplication)
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at org.springframework.boot.loader.LaunchedURLClassLoader.loadClass(LaunchedURLClassLoader.java:92)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:46)
    at org.springframework.boot.loader.Launcher.launch(Launcher.java:87)
    at org.springframework.boot.loader.Launcher.launch(Launcher.java:51)
    at org.springframework.boot.loader.PropertiesLauncher.main(PropertiesLauncher.java:597)
我尝试了以下方法,但没有任何运气:

java -Dloader.path=WEB-INF/lib-provided,WEB-INF/lib,WEB-INF/classes -jar Web-0.0.1-SNAPSHOT.war
java -Dloader.path=BOOT-INF/lib,BOOT-INF/classes,WEB-INF/lib-provided,WEB-INF/lib,WEB-INF/classes -jar Web-0.0.1-SNAPSHOT.war
java -Dloader.path=BOOT-INF/lib/**,BOOT-INF/classes/**,WEB-INF/lib-provided,WEB-INF/lib,WEB-INF/classes -jar Web-0.0.1-SNAPSHOT.war
我还试图指定主类,但仍然得到NoClassDefFoundError:

java -Dloader.path=BOOT-INF/lib/**,BOOT-INF/classes/**,WEB-INF/lib-provided,WEB-INF/lib,WEB-INF/classes -Dloader.main=BOOT-INF.classes.WEB-INF.classes.com.poc.WebApplication -jar Web-0.0.1-SNAPSHOT.war
我还尝试使用
java-cp
指定类路径,但仍然没有成功


这是插件中的错误吗? 我的目录结构与文档中指定的目录结构不同


甚至可以在战争中使用PropertiesLauncher吗?

我怀疑这是可能的,因为它需要某种格式。当它是另一个归档文件(EAR)的一部分时,它肯定不会工作。然而,对我来说,你似乎在做一些原本不该做的事情。为什么您需要添加外部依赖项?如果您想拥有skinny wars,您不应该使用spring boot插件来打包war文件,所以您应该使用maven war pulgin和maven ear插件,并以正确的方式进行配置以使其正常工作。WAR和EAR文件有一个定义的结构,jar/ejb/WAR/rar等必须位于其中。。。。