我有一个多模块Maven项目。它成功编译和安装。
显然com.google.findbugs:findbugs
依赖于asm:asm:3.3
,我想使用org.ow2.asm:asm:5.0.3
来操作某些字节码。
因此,在父pom.xml
中,我从类路径中排除了asm:asm:3.3
依赖项。当我从命令行运行mvn install
时,这可以正常工作。
我无法获得 Build - >使Project 菜单选择在Intellij Idea中工作。
以下是我的pom.xml
文件的相关部分。
<dependency>
<groupId>org.ow2.asm</groupId>
<artifactId>asm</artifactId>
<version>5.0.3</version>
</dependency>
<dependency>
<groupId>org.ow2.asm</groupId>
<artifactId>asm-tree</artifactId>
<version>5.0.3</version>
</dependency>
<dependency>
<groupId>org.ow2.asm</groupId>
<artifactId>asm-util</artifactId>
<version>5.0.3</version>
</dependency>
<dependency>
<groupId>org.ow2.asm</groupId>
<artifactId>asm-commons</artifactId>
<version>5.0.3</version>
</dependency>
<dependency>
<groupId>com.google.code.findbugs</groupId>
<artifactId>findbugs</artifactId>
<version>2.0.3</version>
<exclusions>
<exclusion>
<groupId>asm</groupId>
<artifactId>asm</artifactId>
</exclusion>
<exclusion>
<groupId>asm</groupId>
<artifactId>asm-commons</artifactId>
</exclusion>
<exclusion>
<groupId>asm</groupId>
<artifactId>asm-tree</artifactId>
</exclusion>
</exclusions>
</dependency>
18 public static void main(final String[] args) throws IOException
19 {
20 final InputStream is = NotEmptyTest.class.getResourceAsStream("/com/vertigrated/annotation/NotEmptyTest.class");
21 final ClassReader cr = new ClassReader(is);
22 final ClassNode cn = new ClassNode();
23 cr.accept(cn, 0);
24 for (final MethodNode mn : cn.methods)
25 {
26 - 38 snipped for brevity
39 }
40 }
41 }
Information:Using javac 1.7.0_25 to compile java sources
Information:java: Errors occurred while compiling module 'tests'
Information:Compilation completed with 1 error and 2 warnings in 2 sec
Information:1 error
Information:2 warnings
/<path to my source code>/NotEmptyTest.java
Error:Error:line (24)java: incompatible types
required: org.objectweb.asm.tree.MethodNode
found: java.lang.Object
Warning:Warning:java: /<path to my project>//NotEmptyTest.java uses unchecked or unsafe operations.
Warning:Warning:java: Recompile with -Xlint:unchecked for details.
3.3
非类型安全返回值List
而不是{{1 }} JavaDoc PopUp http://www.vertigrated.com/images/Voila_Capture%202014-05-26_04-38-45_PM.png
List<MethodNode>
答案 0 :(得分:0)
看起来你最终在IntelliJ IDEA的编译类路径中有asm-5.0.3.jar
。
这个JAR通过剥离可剥离的每一部分来优化最小尺寸,包括通用签名(List<MethodNode>
如何成为List
,这实际上是{{1}在你的情况下)。
要确保是这种情况,请尝试通过asm-debug-all
替换List<Object>
,asm
等上的依赖项。你得到的JAR会更大,但项目现在应该编译。
下一个问题是如何在asm-tree
中编译,但在IntelliJ IDEA中失败。您可以在&#34;项目结构&#34;中看到类路径。 &#34;模块&#34;上的对话框,&#34;依赖关系&#34;标签。也许在IntelliJ中没有正确导入类路径(在这种情况下,向IntelliJ IDEA issue tracker报告,您很可能很快得到一些帮助。)