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

让jar中的代码运行,而无需在Tomcat中显式调用

东方镜
2023-03-14

我有一个jar,它是作为大型应用程序的一部分构建的。它目前只包含src/main/resources。

什么是最简单的方法来添加src/main/java并实现一些可以自己运行的东西,而不需要在应用程序代码的其他地方调用?

我不明白Tomcat是如何执行任何东西的,所以我可能是在询问在Tomcat中运行代码的默认方式。

共有2个答案

卫学真
2023-03-14

如果您想将代码作为JAR文件分发(与WAR文件的WEB-INF/classes中的文件不同),您需要一个ServletContainerInitializer

这包括:

  1. 创建实现ServletContainerInitializer
  2. 的类(例如 com.example.Initializer
  3. 将其限定名放入文件META-INF/services/javax。servlet。ServletContainerInitializer
  4. (可选)创建文件META-INF/web片段。包含内容的xml
<?xml version="1.0" encoding="UTF-8"?>
<web-fragment xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-fragment_3_0.xsd"
    version="3.0" metadata-complete="true">

    <name>a_short_name</name>

</web-fragment>

最后一步是有用的,如果您的用户想要启用只是一组选定的ServletContainer初始工具s(使用

编辑:您还可以使用一个ServletContextListener,就像Boug引用的问题一样。在本例中,您不需要步骤2,但需要在web片段中声明ServletContextListener。xml文件。

丁俊智
2023-03-14

Tomcat不执行随机代码。它可以执行一些遵循某些规则的代码。java开发人员最常见的是ServletAPI。

因此,按照servlet API构建的应用程序可以从tomcat运行,因为tomcat将为某些特定的url执行某些特定的代码。它还将在初始化和销毁部署的某些特定Web应用的servlet上下文期间执行一些代码。

甚至最后一个Spring应用程序也被部署为实现servlet API的代码。

 类似资料:
  • Scala代码在Eclipse中成功运行,但其jar未运行 请与我合作解决这个问题

  • 我无法在VS代码上运行Tomcat服务器。 错误信息如下 但是,我的tomcat文件夹放在D驱动器上,与源代码文件夹相同。我不知道它为什么要搜索“C:\Program”文件夹。如果你能帮忙,我真的很感激。非常感谢。 jdk1.8 Windows10 VS code1.47.2 Tomcat9.0.37 在此处输入图像描述

  • 我正在用IntelliJ开发一个小型JavaFX应用程序。 我已经用Intellij工件将它编译成一个jar,它在windows中可以很好地工作,无论是从命令行还是双击jar。 应用程序需要整天运行,我选择使用覆盆子,因为我认为这是最便宜的方式。 我在Raspbian上安装了它,来自Oracle的JDK 8 Oracle网站上的最后一个ARM版本 JVM正在工作,并使用显示正确的版本。我假设安装是

  • 问题内容: 我是新手,也想从C#代码运行jar文件。但是似乎jar文件没有打开,命令提示符很快消失了,因为我看不到任何错误消息。 这是我的代码, 谁能把我引向正确的方向?我在这里做什么错? 问题答案: 您将必须提供-jar切换到java命令。 例如,执行JAR文件的命令是, 所以你可以试试

  • 我是PHP新手。为什么Apache只显示文件内容而不执行? 我用PHP5.5在ubuntu 14的apache2子域上安装了prosper202。9-1本图4。20(cli)(构建时间:2016年10月3日13:00:37)和php fpm,但它只显示,它不会引导我进入设置过程。 怎么了,怎么运行?

  • 右下角有一个小窗口,显示: 但是当我在本地终端中使用命令时,它可以顺利运行。