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

JavaTomcat:继续开发已部署的WAR文件(手头没有源代码)

狄新立
2023-03-14

我有一个从远程服务器下载的编译过的war文件。我可以在本地运行应用程序。问题是我没有源代码,所有java文件都已经编译好了。类文件。

现在,我想向现有项目添加一些新功能。该应用程序很旧,使用的是web。xml文件来声明servlet。例如:

    <servlet>
        <servlet-name>ServletOne</servlet-name>
        <servlet-class>path.to.ServletOne</servlet-class>
    </servlet>
    <servlet>
        <servlet-name>ServletTwo</servlet-name>
        <servlet-class>path.to.ServletTwo</servlet-class>
    </servlet>
...

我试图在web中添加一个新的servlet路径。xml文件,如:

    <servlet>
        <servlet-name>ServletOne</servlet-name>
        <servlet-class>path.to.ServletOne</servlet-class>
    </servlet>
    <servlet>
        <servlet-name>ServletTwo</servlet-name>
        <servlet-class>path.to.ServletTwo</servlet-class>
    </servlet>
    <servlet>
        <servlet-name>MyServlet</servlet-name>
        <servlet-class>path.to.MyServlet</servlet-class>
    </servlet>
...

然后我添加了一个新的。java路径下的文件。到MyServlet和copy-将另一个(已编译)servlet中的所有代码粘贴到我的新servlet类中(我可以看到.class文件的内容,因为我使用的IDE中有这样的功能,但这些类处于只读模式。但是我无法编译MyServlet(无法将MyServlet.java转换为MyServlet.class。因为其余的类已经编译(.class格式,而不是.java),并且所有的导入代码都无法工作(MyServlet无法查看其他文件)。

这是我在尝试javac MyServlet.java时遇到的错误之一:

error: package javax.servlet.http does not exist
import javax.servlet.http.HttpServlet;

当然,我可以使用类似于javac-cp path/to/tomcat/servlet api的东西。jar MyServlet。java,但是如果我需要导入项目中已经存在的类怎么办?我想这会变得有点乱。。。

在没有源代码的情况下继续开发的最有机方式是什么?

我在想的是构建一个单独的Spring Boot应用程序,但是它将在不同的端口中,并且需要一次授权(意思是,当用户在应用程序之间切换时,我不能要求他/她再次登录)。

我使用的是java-8,应用程序部署在tomcat-7上(如果有用的话)

共有1个答案

韩佐
2023-03-14

如果您计划进行更多更改,并且在您的情况下确实允许反编译类,我认为最简单的解决方案是创建一个新项目,反编译所有现有类,并将它们添加到新项目中。

如果是一次性更改,您可以解压缩war文件,将解压缩的WEB-INF/classes目录添加到您正在编译的新文件的类路径中(例如,javac-cp path/to/tomcat/servlet api.jar:path/to/unzipped warfile/WEB-INF/classes MyServlet.java),然后将新编译的类添加到WEB-INF/classes中,并重新打包到war文件中。

 类似资料:
  • 我希望这不是重复的。我尽全力寻找答案,但没有找到任何符合的东西。 我有一个名为“app.war”的.war文件,并将其放入我的Tomcat的webapps文件夹中。当我启动tomcat时,实际上应该部署.war文件,但它没有。 在my Server.xml中,unpackWARs和autoDeploy设置为true。系统中的tomcat服务已安装。 war文件的内容需要有特殊的结构吗?我有以下结构

  • 在Tomcat中手动部署WAR文件 关于如何在internet上的Tomcat中部署war文件,有很多例子,但它只展示了如何在根目录中部署war文件。如果我想让我的应用程序所在的子目录名为“myfolder”,该怎么办。所以我的网址:https://localhost:8080/myfolder/index.html.我需要在webapps中创建一个名为“myfolder”的文件夹,并在那里部署我

  • 我试图将WAR文件加载到Tomcat 7中,并使用eclipse启动或停止服务器。 我将war文件粘贴到TOMCAT_HOME/webapps文件夹中,启动了服务器。 服务器启动正常,我收到下面的控制台消息。 但当我试图访问我的应用程序时,它给了我错误404,找不到文件。 我查看了TOMCAT_HOME/webapps应用程序,发现了我的war文件和一个同名文件夹——“JavaServerFace

  • 我在使用WAR文件将web应用程序从Eclipse部署到Linux上的Tomcat服务器时遇到了问题。我使用的是Tomcat 7.0.53。在本地部署时,我可以创建指定的文件夹路径,这些路径放入文件夹共享中,并将文件放置在这些位置。当试图通过Tomcat服务器上部署的WAR执行这些过程时,不会创建该文件夹共享中的目录,也不会放置文件。通过日志记录,我知道这些文件夹目标和文件是创建的。这背后有什么可

  • 在使用WebLogic-10.3.6部署war文件时,我遇到了如下异常 *错误为weblogic.descriptor.descriptorexception:发现验证问题问题:cvc-enumeration-valid:字符串值“3.0”不是命名空间http://java.sun.com/xml/ns/javaee:*中web-app-versionType的有效枚举值 谁能告诉我问题出在哪里?