【发布时间】:2015-10-22 19:44:55
【问题描述】:
maven 依赖中有一个类与 Java 8 不兼容。
您如何正确解决该问题?
现在我正在做以下事情:
- 创建同名包
- 在该包中创建一个同名的类
- 复制粘贴代码
- 修复不兼容的 API 调用
问题是这个类包含对受限类的 API 调用,尽管我更改了 Eclipse 编译器设置(Window -> Preferences -> Java -> Compiler -> Error/Warnings -> Deprecated and restricted API -> Forbidden reference (访问规则):错误->警告)允许访问该项目有时只会编译。如果它没有编译,我会得到一个“找不到符号”的错误。
编辑:
以下是您要求的详细信息:
依赖:http://mvnrepository.com/artifact/com.sun.xml.wss/xws-security/3.0
类:加密处理器
-
必要的改变:
// Change line 1053 FROM: // _dataEncryptor = XMLCipher.getInstance(dataEncAlgo, _dataCipher); // TO: _dataEncryptor = XMLCipher.getInstance(dataEncAlgo);
Edit-2:
Maven 构建错误:
[ERROR] symbol: class XMLCipher
[ERROR] location: class com.sun.xml.wss.impl.apachecrypto.EncryptionProcessor
[ERROR] /C:/Users/{name}/development/eclipse_workspace/git/xws-security/src/main/java/com/sun/xml/wss/impl/apachecrypto/EncryptionProcessor.java:[1482,98] cannot find symbol
【问题讨论】:
-
包含不兼容的依赖项是你自己的还是你公司的项目?请给我们一些代码和错误信息
-
类是通过类路径后面的类加载器加载的。在 web 应用程序中,您可以将补丁类放在 WEB-INF/classes 中——这些是最重要的。如果不在 webapp 中,请使用该类创建一个 jar 并将其首先传递给 java 进程: java -cp my-patch.jar:original.jar - 修补东西有点臭,因为它难以维护和部署应用程序,例如这。人们经常忘记补丁和它的用途等等。如果该类的源可用,我宁愿根据它们创建一个修补过的工件。
标签: java eclipse maven dependencies