gpt4 book ai didi

java - 与Java软件包的混淆

转载 作者:行者123 更新时间:2023-12-03 23:34:01 27 4
gpt4 key购买 nike

所以我以为我了解包装,但事实却并非如此。


包中的类:我具有以下文件夹结构:mypackage/mysubpackage。在mysubpackage文件夹中,我有2个类:

package mypackage.mysubpackage;

public class Class1 {...}





    package mypackage.mysubpackage;

public class Class2 {...}


但是,当我在目录 javac Class1.java中使用 mypackage/mysubpackage编译Class1(使用Class2中的方法)时,看不到Class2:

Class1.java: error: cannot find symbol
Class2 c = new Class2();
^
symbol: class Class2
location: class Class1


如果我在包含 javac Class1.java的目录中运行 mypackage/mysubpackage,它会很好地工作。编译不应该在mysubpackage文件夹中进行吗?


另一个包中的类:现在,我有了另一个类,该类中的方法我希望所有子包都可以使用,因此我在 Commons.java内创建了一个最终的 mypackage/commons

package mypackage.commons;

public final class Commons {

public static double method() {...}
...
}



然后更新导入该类的Class2,以便可以在类中使用其方法:

    package mypackage.mysubpackage;

import mypackage.commons.*;

public class Class2 {...}


现在找不到在最终类中定义的方法:

./mypackage/mysubpackage/Class2.java: error: cannot find symbol
double var = method();
^
symbol: method method()
location: class Class2


如果找不到,就不应该吗?我想我正确地导入了它,方法是静态的,类是最终的。为什么不识别它?

干杯!

最佳答案

看起来问题出在从命令行启动Java编译器时在哪里设置工作目录。

我建议您选择一个集成的开发环境-Eclipse is a good one。使用IDE,您不会遇到任何此类问题。这是我刚刚在Eclipse中创建的可编译相关性的类。

公地

package com.example.packagecommons;

public class Commons {

public static double method() {
return 0;}
}


1类

package com.example.packages;

public class Class1 {
private Class2 c2;
public Class1() {
c2 = new Class2();
}
}


2类

package com.example.packages;

import com.example.packagecommons.Commons;
public class Class2 {
private double initialValue;
public Class2() {
initialValue = Commons.method();
}
public double getValue() {
return initialValue;
}
}

关于java - 与Java软件包的混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25711008/

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