Java Spring Boot应用程序未部署在Glassfish 4.1上

Java Spring Boot应用程序未部署在Glassfish 4.1上,java,spring,glassfish,spring-boot,Java,Spring,Glassfish,Spring Boot,我有一个香草春季启动应用程序,它由以下pom.xml组成 <?xml version="1.0" encoding="UTF-8"?> <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.

我有一个香草春季启动应用程序,它由以下pom.xml组成

 <?xml version="1.0" encoding="UTF-8"?>
<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>xxx.alexius</groupId>
    <artifactId>myapp</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>war</packaging>

    <name>my app</name>
<description>Core Application Platform</description>
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.2.2.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <java.version>1.7</java.version>
</properties>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-mongodb</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-mobile</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-social-facebook</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-social-twitter</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>org.postgresql</groupId>
        <artifactId>postgresql</artifactId>
        <version>9.4-1201-jdbc41</version>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.3.2</version>
            <configuration>
                <source>1.7</source>
                <target>1.7</target>
                <compilerArgument>-Xlint:all</compilerArgument>
                <showWarnings>true</showWarnings>
                <showDeprecation>true</showDeprecation>
            </configuration>
        </plugin>
    </plugins>
</build>

你知道哪里出了问题吗?它是弹簧虫还是玻璃鱼虫?

看起来像玻璃鱼里的虫子:

您可以尝试通过在
web.xml
中添加
metadata complete=“true”
来解决此问题,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.1" 
         metadata-complete="true"
         xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">
</web-app>

metadata complete=“true”表示JAR文件在 /WEB-INF/lib不需要扫描Servlet 3.0特定的 注释,但仍将扫描webapp自己的类

另见:


在您的类路径中吗?这不是我的pom,所以可能不是,但是spring boot应该具有pom中所需的所有依赖项。项目的其余部分只是一个空项目,没有额外的代码。只需要在没有任何功能的情况下部署它,这样我就可以开始处理它了。执行mvn dependency:tree,查看类路径中是否有liquibase。Spring Boot会检查类路径上有哪些类,以确定要应用的自动配置。为此,它尝试加载类并捕获
ClassNotFoundExceptions
。所以我猜要么这种机制在玻璃鱼身上不起作用(不确定为什么会起作用)或者玻璃鱼坏了,或者包含了干扰类检测或自动配置的其他类。我添加了依赖项
org.liquibase liquibase core 3.3.2
,现在我在部署应用程序[平台]时遇到了
严重:异常严重:在生命周期处理过程中发生异常java.lang.ArrayStoreException:sun.reflect.annotation.TypeNotPresentExceptionProxy
我尝试在版本1.x中确定。但是当我尝试使用SpringBoot2.x时。它不起作用。Glassfish服务器适合Spring Boot吗?目前,我在将Spring Boot 2应用程序部署到Glassfish 4.1.2时遇到了一些问题——可能是因为Glassfish使用了旧的Jackson库,这些库干扰了Maven/Spring Boot pack在战争中使用的库。可能应该换成Glassfish 5,这不是我的选择
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.1" 
         metadata-complete="true"
         xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">
</web-app>