java - 在heroku上运行spring boot应用程序时出现"Unable to read TLD from JAR file"

标签 java spring heroku spring-boot tld

我编写了一个在 Heroku 上运行的 springboot 应用程序。 当我使用 maven spring-boot:run 在本地运行时,一切正常。

但是当我将应用程序部署到 Heroku 时,页面显示错误:

There was an unexpected error (type=Internal Server Error, status=500).
/WEB-INF/jsp/login.jsp (line: 3, column: 0) /WEB-INF/jsp/common.jsp (line: 3, column: 64) Unable to read TLD "META-INF/spring.tld" from JAR file "jar:file:/app/target/slog-1.0-SNAPSHOT.jar!/lib/spring-webmvc-4.0.7.RELEASE.jar": java.io.IOException: Unable to open root Jar file 'jar:file:/app/target/slog-1.0-SNAPSHOT.jar'

我使用“java -jar target/*.jar”在本地运行 jar 时出现相同的错误。

这是我的 pom.xml 文件:

<?xml version="1.0" encoding="UTF-8"?>

http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0

<groupId>ort.stv</groupId>
<artifactId>slog</artifactId>
<version>1.0-SNAPSHOT</version>
<name>Spring Boot Blog System</name>

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.1.6.RELEASE</version>
</parent>

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</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-tomcat</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-taglibs</artifactId>
    </dependency>


    <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-jasper</artifactId>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
        <scope>provided</scope>
    </dependency>
    <!-- JSR303 BeanValidator -->
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-validator</artifactId>
    </dependency>


    <!-- GENERAL UTILS begin -->
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
        <version>3.3.2</version>
    </dependency>

    <dependency>
        <groupId>com.google.guava</groupId>
        <artifactId>guava</artifactId>
        <version>18.0</version>
    </dependency>
    <!-- GENERAL UTILS end -->


    <dependency>
        <groupId>postgresql</groupId>
        <artifactId>postgresql</artifactId>
        <version>9.1-901-1.jdbc4</version>
        <classifier />
    </dependency>
    <!--<dependency>-->
        <!--<groupId>org.scala-lang</groupId>-->
        <!--<artifactId>scala-library</artifactId>-->
        <!--<version>2.10.4</version>-->
    <!--</dependency>-->
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

最佳答案

有一个known limitation在 Spring Boot 和 open issue与使用带有嵌入式容器的 JSP 相关。长话短说,目前不支持。但是,Spring Boot 引用文档链接到 GitHub example project他们声称可以正常工作。

关于java - 在heroku上运行spring boot应用程序时出现"Unable to read TLD from JAR file",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25800083/

相关文章:

java - Java 类路径汇编如何工作?

spring - @Profile 导致无法启动 EmbeddedWebApplicationContext

java - 需要从 spring boot 2.0 中排除 spring-orm 模块并从 jar 文件中使用它的旧版本

java - 以编程方式实例化具有 Spring 生命周期注释的类的对象

python - 大于缓冲页 1/3 的值无法编入索引 Django 错误

ruby-on-rails - ruby 在heroku中的cpu和内存使用情况

java - 如何使用正则表达式获取第一个匹配字符串

java - 如何在 Java 中将 "Æàìáûë"转换为可读的西里尔字母?

java - 从java代码将静态数据插入SQLite DB

ruby-on-rails - Rails 和 Heroku PGError : column does not exist