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

创建一个支持java和Jakarta的jar文件

鲜于高明
2023-03-14

我还看到,我不必使用导入,只需使用整个路径调用类。这似乎是一个很多的工作,但可能的解决方案。我只想知道有没有更快更容易的解决办法。

共有1个答案

南宫建白
2023-03-14

您描述的行为可以通过ClassFileTransformer实现,就像Tomcat迁移工具提供的那样。Tomcat10的每个副本都与迁移工具的阴影版本捆绑在一起,所以您不需要独立分发它。

您可以创建jakarta.servlet.ServletContainerInitializer,它将在web应用程序启动时注入ClassFileTransformer:

import java.util.Set;
import jakarta.servlet.ServletContext;
import jakarta.servlet.ServletException;
import org.apache.tomcat.InstrumentableClassLoader;
import org.apache.tomcat.jakartaee.ClassConverter;

public class JavaEEContainerInitializer implements javax.servlet.ServletContainerInitializer {

    @Override
    public void onStartup(Set<Class< ? >> c, ServletContext ctx) throws ServletException {
        final ClassLoader cl = Thread.currentThread().getContextClassLoader();
        if (cl instanceof InstrumentableClassLoader) {
            final InstrumentableClassLoader instrumentableCl = (InstrumentableClassLoader) cl;
            instrumentableCl.addTransformer(new ClassConverter());
        }
    }
}

然而,对于一个库,我宁愿分发它的两个版本,这样库就不必扰乱应用程序的类加载器。例如。OpenWebBeans提供了同一工件的两个版本:Java EE版本和带有Jakarta分类器的Jakarta EE版本。

 类似资料:
  • 我有个问题希望有人能帮我解决。 我有两个java项目,其中一个我们将称之为CORE,它包含一组通用功能的类,并向我们的DB提供hibernate接口/DAO等。 其他项目需要CORE以便与我们的DB交互并使用公共的CORE功能。 现在,我已经使用Gradle创建了一个Jar文件,并通过IDE将该Jar文件导入到其他项目中,所有内容都可以正确编译。 现在我明白了,当创建一个Jar文件时,您需要提供一

  • 问题内容: 我正在学习Java,但遇到了问题。我创建了6个不同的类,每个类都有自己的方法。我想为每个类创建可执行文件,即6个可执行文件。 到目前为止,我尝试了 我得到“无法访问jarfile cf”。我做错了,但我不知道怎么办。如果这意味着某种意义,我还将使用Eclipse IDE。 问题答案: 为了创建一个.jar文件,你需要使用jar而不是java: 另外,如果要使其可执行,则需要为应用程序指

  • 我有一个文件夹。java文件,我需要编译它们以获得。jar文件。主要的问题是,这些文件太多了,它们被分成了许多文件夹。有没有办法把它们都编译好让我。类文件并创建一个jar文件夹?我的文件夹由Weka工具修改的脚本组成,我需要编译它们来运行程序。 非常感谢你的帮助。

  • 问题内容: 我想创建一个jar文件来执行,该文件是使用java和clojure实现的。这是我采取的步骤。 使我的Java代码调用clojure代码 我可以生成一个具有clojure核心和我的clojure代码的jar文件(ThingOne-1.0.0-SNAPSHOT- standalone.jar),并且我还可以得到一个使用jar文件中使用clojure代码的类文件(HelloJava.clas

  • 我试图使用一个jar生成一个包含clojure jar文件和java类文件的jar文件:创建一个jar文件,用于从java/clojure执行 按照指令,我可以使用生成目录。按照指示,我替换了java源代码,并添加了ThingOne-1.0.0-SNAPSHOT-standalone.jar 运行,它构建jar文件时没有出现错误,但是当我尝试执行jar文件时,收到了错误消息。 什么可能是错的?

  • 问题内容: 我想知道如何创建一个jar文件,该文件保留其内容的文件权限。 我将源文件和可执行文件打包在一个jar文件中,该文件将在使用前提取。人们应该能够通过运行批处理/ shell脚本文件立即运行示例和演示。然后,他们应该能够修改源代码并重新编译所有内容。 我正在努力使使用它的人过上轻松的生活,其中包括Java和编程的新手,他们可能正在Linux / Unix上工作。 我可以访问运行Window