当前位置: 首页 > 知识库问答 >
问题:

tomcat 7应用程序迁移到tomcat 8

习胤运
2023-03-14

我试图用以下xml文件在tomcat 8中部署一个应用程序:

<?xml version='1.0' encoding='utf-8'?>
<Context docBase="/home/httpd/chAdmin" path="/chAdmin">
<Loader className="org.apache.catalina.loader.VirtualWebappLoader"
        virtualClasspath="/usr/local/calendar/libs/google-api-client-1.19.0.jar;/usr/local/calendar/google-api-services-calendar-v3-rev107-1.19.0.jar;/usr/local/calendar/libs/google-http-client-1.19.0.jar;/usr/local/calendar/libs/google-http-client-jackson2-1.19.0.jar;/usr/local/calendar/libs/google-oauth-client-1.19.0.jar;/usr/local/calendar/libs/jackson-core-2.1.3.jar"/>
</Context>

我读了很多关于资源方法的迁移,并将xml文件更改为:

<?xml version='1.0' encoding='utf-8'?>
<Context docBase="/home/httpd/chAdmin" path="/chAdmin">
    <Resources className="org.apache.catalina.webresources.StandardRoot">
        <JarResources className="org.apache.catalina.webresources.JarResourceSet"
            base="/usr/local/calendar/libs/google-api-client-1.19.0.jar" webAppMount="/" />
        <JarResources className="org.apache.catalina.webresources.JarResourceSet"
            base="/usr/local/calendar/google-api-services-calendar-v3-rev107-1.19.0.jar" webAppMount="/" />
        <JarResources className="org.apache.catalina.webresources.JarResourceSet"
            base="/usr/local/calendar/libs/google-http-client-1.19.0.jar" webAppMount="/" />
        <JarResources className="org.apache.catalina.webresources.JarResourceSet"
            base="/usr/local/calendar/libs/google-http-client-jackson2-1.19.0.jar" webAppMount="/" />
        <JarResources className="org.apache.catalina.webresources.JarResourceSet"
            base="/usr/local/calendar/libs/google-oauth-client-1.19.0.jar" webAppMount="/" />
        <JarResources className="org.apache.catalina.webresources.JarResourceSet"
            base="/usr/local/calendar/libs/jackson-core-2.1.3.jar" webAppMount="/" />
    </Resources>
</Context>

该应用程序启动正常,但没有从jar文件中导入类。我肯定我错过了一些东西,找不到一个好的例子来说明如何做到这一点。请帮助。

我的JSP无法编译,正在抛出

组织。阿帕奇。贾斯珀。JaspereException:无法为JSP编译类:在生成的java文件:[/usr/local/apache-tomcat-8.0.30/work/Catalina/localhost/chAdmin/org/apache/JSP/charters_JSP.java]的第[20]行发生错误,只能导入类型。通用域名格式。谷歌。应用程序编程接口。客户json。JsonFactory解析为一个包

显然,这意味着jar文件无法正确导入,因为com/google/api/Client/json/JsonFactory.classgoogle-http-client-1.19.0.jar

共有3个答案

谭浩皛
2023-03-14

我试图通过在上下文中添加下面的Postresources标记来覆盖这些类。xml,但它没有帮助。关于如何用外部类文件覆盖分解的war文件中的类的任何其他想法。

<PostResources className="org.apache.catalina.webresources.DirResourceSet"
                        base="/workspace/MY_UTIL_PROJECT/WebContent/WEB-INF/classes"
                        webAppMount="/WEB-INF/classes">
                </PostResources>
江曦
2023-03-14

请尝试使用WEB-INF/lib作为您的webAppMount

举个例子:

请注意里面的注释,并注意我使用了PostResources而不是PreResources,这样,如果我对我的“util”实现不满意,我可以重写当前项目中的类。实际上,我不确定JarResource是否被视为“PostResource”或“PreResource”,但重写静态内容和类是有效的。

    <!--
         https://tomcat.apache.org/tomcat-8.0-doc/config/resources.html
         http://stackoverflow.com/questions/23143697/adding-external-resources-to-class-path-in-tomcat-8
         http://stackoverflow.com/questions/34515852/tomcat-7-application-migration-to-tomcat-8
         http://mikusa.blogspot.co.za/2014/07/tips-on-migrating-to-tomat-8-resources.html
    -->
    <Context path="/MY_PROJECT" docBase="/MY_PROJECT">
        <Resources className="org.apache.catalina.webresources.StandardRoot">
            <!-- Post-load the static content from my util project -->
            <PostResources className="org.apache.catalina.webresources.DirResourceSet"
                    base="/workspace/MY_UTIL_PROJECT/WebContent"
                    webAppMount="/">
            </PostResources>
            <!-- Post-load the classes from my util project -->
            <PostResources className="org.apache.catalina.webresources.DirResourceSet"
                    base="/workspace/MY_UTIL_PROJECT/WebContent/WEB-INF/classes"
                    webAppMount="/WEB-INF/classes">
            </PostResources>
            <!-- Load the JARs contained within my util project -->
            <JarResources className="org.apache.catalina.webresources.DirResourceSet"
                    base="/workspace/MY_UTIL_PROJECT/WebContent/WEB-INF/lib"
                    webAppMount="/WEB-INF/lib">
            </JarResources>
        </Resources>
    </Context>
郎星汉
2023-03-14

我在搜索丢失的jar问题时发现了这个问题,我通过将webAppMount更改为WEB-INF/classes来实现它,如下所示

<JarResources className="org.apache.catalina.webresources.JarResourceSet"
        base="/usr/local/calendar/libs/google-http-client-1.19.0.jar" webAppMount="/WEB-INF/classes" />
 类似资料:
  • Tomcat10最近发布了,并尝试简单地部署应用程序。由于Java EE 8使用javax.*包名称空间,而Tomcat10使用Java EE 9,后者使用jakarta.*名称空间,因此很难从Tomcat9迁移到10。有什么方法或工具可以做到这一点吗?我认为这对tomcat 7/8也是一样的。

  • 我发现这个类是的一部分,但我使用的是。 我复制了hibernate-core-4.2.0.final.jar,hibernate-ehcache-4.2.0.final.jar,cglib-2.2.2.jar,hibernate-jpa-2.0-api-1.0.1.final.jar,hibernate-commons-annotations-4.0.1.final.jar,hibernate-e

  • 我正在探索将java web应用程序移动到Azure应用程序服务的可能性。应用程序on prem在启动时读取属性文件。 是否有可能将属性文件传递或放置到应用服务?如果没有,建议将此类遗留应用程序移动到Azure应用服务?

  • 我正在将flutter应用程序从Firebase实时数据库迁移到Firestore。我在聊天应用程序中更新这段代码时遇到麻烦,因为firestore没有FireBaseAnimatedList。 旧代码: 现在只有错误是在动画中。我有错误:

  • 我有一个Web项目,我很容易在tomcat上对其进行depoly。事实上,我有一个实现的类(这个类真的很胖),因为你知道每个支持servlet 3.0的应用程序服务器,它可以很容易地检测到它并尝试启动它。现在我想知道是否可以使用Spring启动启动器,并且无需任何进一步的配置,我将我的传递给它,并根据我的启动我的项目进行Spring启动? 我只想使用spring boot的方法在Tomcat上部署

  • 我用xcode11运行我的应用程序,并且可以发布它。但是,我看到了苹果发布的下面这则公告; “从2021年4月开始,所有提交到应用商店的iOS和iPadOS应用都必须使用Xcode 12和iOS 14 SDK构建。” 我到底该怎么做?如果我下载Xcode12并运行我的应用程序,SDK会自动更新吗?安装iOS 14 SDK该怎么做? 或者我需要为我现有的豆荚“豆荚更新”吗?在我的项目“iOS部署目标