gpt4 book ai didi

java - _JAVA_OPTIONS 和 CLASSPATH 组合

转载 作者:行者123 更新时间:2023-12-02 09:18:18 24 4
gpt4 key购买 nike

我尝试将代理附加到程序。

我使用 _JAVA_OPTIONS 进行以下操作:

export _JAVA_OPTIONS='-javaagent:/java/libs/doeke_sfjl_ui/sfjl_ui_widget_agent.jar'

但它需要一个 jar 文件才能运行。我尝试使用以下方法解决这个问题:

export CLASSPATH=/java/libs/javassist-3.26.0.GA/javassist-3.26.0.GA.jar

但我仍然得到:

ClassNotFoundException: javassist.expr.ExprEditor

它位于javassist-3.26.0.GA.jar中。

如何在代理运行之前添加 javassist-3.26.0.GA.jar

最佳答案

这里出现问题的各种不同方式:

  1. 您应该避免这些环境变量。 java 背后的想法是你可以同时运行 8 个不同的应用程序。特别是在 Windows 上,环境变量是“全局”的;您可以为每个进程指定它们,尤其是在 UNIX 上,但是为什么不直接手动使用这些开关呢?此外,绝大多数教程等都假定您的默认类路径至少包括 . (当前目录),您在这里的尝试覆盖了它,所以您这样做有点搞乱了您的java安装。为什么你不能直接运行 java -cp whatever -javaagent:thingie.jar 有充分的理由吗? ?

  2. java 代理在 VM 内的单独空间中运行,并且该空间不会按照您指定的方式使用类路径。最简单的修复方法是让代理 jar 修复其自己的类路径,方法是附带列出其类路径的 list 条目。这意味着您需要一个名为 META-INF/MANIFEST.MF 的文件在代理 jar 里面,里面有一行文字:Boot-Class-Path: lib/a.jar lib/b.jar其中 [1] 空格是分隔符,[2] 正斜杠用于分隔路径部分,即使在 Windows 上也是如此,[3] 它相对于包含此 jar 的目录。请注意,通常您会使用 Class-Path:对于 Java 应用程序; Boot-Class-Path专门用于java代理。

参见section Manifest Attributes in Instrumentation's documentation了解更多详情。

关于java - _JAVA_OPTIONS 和 CLASSPATH 组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58856634/

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