在 Eclipse 中运行 junit 时,这一切都工作正常。当我将 jar 部署到 Oracle Serviec Bus 并通过代理调用它时,我遇到了问题。
我的jar使用httpClient和httpCore,httpClient也对httpCore有一些依赖。当 httpclient 引用 httpcore 而没有从我的 jar 中引用时,就会出现问题。我已经通过编辑 httpclient 的 list 以获取 httpcore jar 来证明外部 jar 引用了另一个 jar。如果我这样做,一切都会有效,但我不想像您期望的那样手动编辑外部 jar!
我的 list 设置了这个类路径: 类路径:httpcore-4.3.jar httpclient-4.3.1.jar DatabaseUtil-1.0.jar commons-codec-1.8.jar
我正在努力将 jar 添加到服务器的类路径中,我认为这会起作用,但检查是否有另一种方法可以做到这一点,因为有其他服务/jar 使用相同的 jvm。我复制了下面的测试类来显示问题证明
非常感谢任何帮助。
谢谢, 丹尼尔。
public class CheckHTTPJars {
public static String checkHttpJarsLoaded()
{
try {
System.out.println("Starting...");
System.out.println("classpath: " + System.getProperty("java.class.path"));
HttpHost host = new HttpHost("test");
System.out.println("Hit HTTPCore... ");
BasicResponseHandler b = new BasicResponseHandler();
System.out.println("Hit HTTPClient... ");
HttpGet get = new HttpGet();
System.out.println("Hit HTTPClient but referencing HttpCore... ");
HttpRequest h = null;
System.out.println("Hit HTTPCore... ");
return("Passed");
} catch (Exception e) {
return (e.getMessage());
}
}
}
最佳答案
您是否使用 OSB java callout Activity ?
您是否遇到找不到类(或其他异常)?
DatabaseUtil-1.0.jar是什么,是你制作的并在callout中使用的吗?
我认为这个答案中这些问题的答案是正确的。
您需要两个(未修改的)jar 才能使您的代码正常工作。
如果您不想将这两个 jar 放在服务器类路径中(Oracle 建议将其用于常见工件),您可以将它们与标注中使用的自定义 jar 捆绑在一起。这可能没问题(取决于用例),因为两个 jar 总共约为 1MB。请参阅How can I create an executable JAR with dependencies using Maven?
请记住,您需要 commons-codec 和这两个的其他一些依赖项,请检查 http://mvnrepository.com/完整列表。
关于java - 尝试通过另一个外部 jar 引用外部 jar - httpcore 通过 httpclient,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19837934/