gpt4 book ai didi

java - 创建可双击的 'uber' jar 来拉入 Spring 应用程序的其他 jar

转载 作者:行者123 更新时间:2023-11-30 05:13:22 25 4
gpt4 key购买 nike

我有一个在 tomcat 中运行的成熟的、基于 spring(3.0.1) 的多模块应用程序。我正在尝试创建一个独立的工具,我可以通过单个 jar 分发给用户(这样他们只需双击它),该工具捆绑在上述应用程序的某些模块中。

我使用了 maven-shade-plugin 来组装这个 jar。如果我分解 jar,看起来好像所有依赖项都在那里,并且两个 spring 元数据文件已从所有单独的 spring jar 正确连接起来。应用程序一直运行,直到我尝试实例化 ClassPathXmlApplicationContext 为止。当用户单击应用程序中的按钮时,将执行以下方法:

public void createAppContext() {
ClassPathXmlApplicationContext context =
new ClassPathXmlApplicationContext(springFiles);
}

“springFiles”在类中声明如下:

public final String[] springFiles = { "/applicationContext-beans.xml" };

执行上述方法时出现以下错误:

Exception in thread "Thread-8" java.lang.ArrayIndexOutOfBoundsException: 3350        at org.springframework.asm.ClassReader.(Unknown Source)        at org.springframework.asm.ClassReader.(Unknown Source)        at org.springframework.asm.ClassReader.(Unknown Source)        at org.springframework.core.type.classreading.SimpleMetadataReader.(SimpleMetadataReader.java:48)        at org.springframework.core.type.classreading.SimpleMetadataReaderFactory.getMetadataReader(SimpleMetadataReaderFactory.java:80)        at org.springframework.core.type.classreading.CachingMetadataReaderFactory.getMetadataReader(CachingMetadataReaderFactory.java:82)        at org.springframework.core.type.classreading.SimpleMetadataReaderFactory.getMetadataReader(SimpleMetadataReaderFactory.java:76)        at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.checkConfigurationClassCandidate(ConfigurationClassBeanDefinitionReader.java:302)        at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:157)        at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:132)        at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:584)        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:405)        at org.springframework.context.support.ClassPathXmlApplicationContext.(ClassPathXmlApplicationContext.java:139)        at org.springframework.context.support.ClassPathXmlApplicationContext.(ClassPathXmlApplicationContext.java:93)        at com.mycompany.StandaloneTool$2.run(StandaloneTool.java:124)

任何帮助将不胜感激!

最佳答案

只是一种预感,但可能是阴影插件覆盖了 Spring 在配置文件中用于其 namespace 的元数据。看看merging content of specific files在阴影插件的文档中查看它是否解决了您的问题。

关于java - 创建可双击的 'uber' jar 来拉入 Spring 应用程序的其他 jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2547192/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com