我有一些CDI应用程序,它是作为一个带有引导程序主类的胖子启动的:
java $ARGS -jar foo_cdi.jar
由于某些原因我无法更改此命令行,因此无法更改foo_cdi.jar
。
但我可以配置$ARGS
环境变量。
我需要的是在类路径中添加一些额外的additional.jar
(假设它与foo.jar
位于同一目录中)。
此additional.jar
包含某些服务的替代实现,在foo_cdi.jar
内的CDI应用程序中使用。
当然additional.jar
包含带有扫描/包含路径的META-INF/beans.xml
以及标有
@Alternative
@Priority(Interceptor.Priority.APPLICATION + 1)
但是,仅将ARGS
设置为-classpath additional.jar
不起作用。我想这是因为-jar
选项:
使用此选项时,JAR文件是所有用户的来源 类和其他用户类路径设置将被忽略。
所以我的问题是:有什么方法可以解决这个难题吗?
目前我建议只使用一个hack-solution,就是使用自己的javaagent
,它将使用我自己的实现重新定义所需的类。但在我看来,这是一个淫秽和肮脏的黑客。
(虽然我能做到:
java -javaagent:additional.jar foo_cdi.jar
)
还有其他想法吗?
答案 0 :(得分:1)
您可以使用{8}将Java 8附加到引导类路径中。