gpt4 book ai didi

java - Maven 编译失败,显示 "cannot find symbol",而使用 Eclipse,它编译

转载 作者:搜寻专家 更新时间:2023-10-31 19:53:39 54 4
gpt4 key购买 nike

我在 Maven 中遇到编译错误,但在 Eclipse 中一切正常。

是我做错了什么还是 Maven 错误?

我已经创建了一个代码片段,因此您可以尝试重现它。

这是 Java 源文件和一个 pom.xml。

package p1;

import p1.A.D.C;
import p1.p2.E;

public class A {
interface B<T> {
T methodB();
}

class D implements B<E> {
C c = new C();

public C getC() {
return c;
}

class C {
public void methodC() {
System.out.println(this);
}
}

@Override
public E methodB() {
return new E();
}
}

public void methodA() {
D d = new D();
d.methodB();
C c = d.getC();
c.methodC();
}

public static void main(String[] args) {
A a = new A();
a.methodA();
}
}


package p1.p2;

public class E {
}


<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>mvntst</groupId>
<artifactId>test</artifactId>
<version>0</version>
<packaging>jar</packaging>
<name>mvntst</name>
</project>

当我运行 mvn clean compile 时,我得到了这个输出:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project test: Compilation failure
[ERROR] /C:/dev/test/CompilerTest/MavenTest/src/main/java/p1/A.java:[6,30] cannot find symbol
[ERROR] symbol: class E
[ERROR] location: class p1.A
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException

这是 mvn --version 的结果:

Apache Maven 3.3.1 (cab6659f9874fa96462afef40fcf6bc033d58c1c; 2015-03-13T23:10:27+03:00)
Maven home: C:\dev\apache-maven-3.3.1\bin\..
Java version: 1.8.0_40, vendor: Oracle Corporation
Java home: C:\Program Files\Java\jdk1.8.0_40\jre
Default locale: en_US, platform encoding: Cp1252
OS name: "windows 7", version: "6.1", arch: "amd64", family: "dos"

最佳答案

如果您颠倒导入的顺序...

import p1.p2.E;
import p1.A.D.C;

...它会编译得很好。这可能是由于编译器假定文件夹 A、D 和 C 存在于 p1 下,但事实并非如此。

但是与其这样做(只是感觉不对),您应该更改在methodA 中引入C 的方式。

public void methodA() {
D d = new D();
d.methodB();
D.C c = d.getC();
c.methodC();
}

您也可以去掉内部类的导入,因为上面的代码不再需要了。

关于java - Maven 编译失败,显示 "cannot find symbol",而使用 Eclipse,它编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34273176/

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