尝试重新编译包中的单个类时,我遇到了这个问题。
现在这个类使用全局类型,其中一些全局类型引用它。所以把它从包装中取出真的不是一种选择。
因此,当我尝试单独使用javac编译它时,我得到无效的符号错误,netbeans显示它正在尝试编译classespackage.globaltype之类的东西。基本上它正在搜索包内的全局类。反正有没有阻止它这样做?
以下是代码:
Global
public class Global {
example.Main main;
public Global(example.Main m) {
main = m;
}
}
example.Main
package example;
public class Main {
public static void main(String[] args) {
Global g = new Global(new Main()); // COMPILE ERROR
}
}
答案 0 :(得分:1)
我收到无效的符号错误
你可能意味着“找不到符号”的错误?这可能是由任何事情造成的。不在compiletime类路径中的导入类,不存在的方法,超出范围的变量。您确实需要发布编译错误以获得更详细的答案。
至少,这听起来好像没有使用-cp
或-classpath
参数在compiletime类路径中指定依赖项(导入的类)。
有没有阻止它这样做?
通过倾听这些错误并采取相应的行动。
更新:问题的原因是默认包中的类(即类没有 a { {1}}声明)对具体包内的类不可见(即带有 a package
声明的类)。您需要将package
放入包中。然后它可见(可导入)到包内的类。
答案 1 :(得分:0)
如果在类包中引用全局类型,则必须将它们包含在类路径中。执行javac时,请确保在类路径中包含全局类型类(使用-cp选项。)