我已经为我的库项目使用了17版本的Guava并将其解压缩到jar中。其他项目使用我的库,但它也有一个旧版本的番石榴。当我尝试运行应用程序时,它会忽略新的Guava并导致错误,如
java.lang.NoSuchMethodError: com.google.common.cache.CacheBuilder.maximumSize(J)Lcom/google/common/cache/CacheBuilder;
如何强制我的项目使用新的Guava和应用程序来使用旧的?
答案 0 :(得分:1)
我假设您的项目和应用程序是不同的实体。另外,通过Project我假设您指的是Eclipse / IntelliJ / Netbeans项目
您需要单独为项目和应用程序设置正确的类路径。
如果您使用IDE调试项目,则您的项目需要包含已下载的新JAR。每个IDE都有自己的机制,可以将依赖项添加到Project的类路径中,因此您可能需要参考与该IDE相关的文档。
对于您的应用程序,您可以将其作为Java MyApp -cp"旧JAR"的路径启动。如果要将应用程序打包为JAR,请确保打包旧版本的Guava。
希望这有帮助。
根据与问题所有者的讨论进行编辑
此处的查询与此SO query类似。解决此问题的正确方法是安装Custom ClassLoader或使用OSGi