【问题标题】:More on Java can't find symbol from .class in the same directory更多关于 Java 无法从同一目录中的 .class 中找到符号
【发布时间】:2014-11-11 04:14:21
【问题描述】:

我定义了 2 个 java 文件:Phone2.java 和 TestPhone2.java。 Phone2.java 编译得很好,并被放置在一个名为 classes 的包中。 TestPhone2 应该创建一个 Phone2 的实例,但我无法让 TestPhone2.java 编译。下面是我的目录结构:

2个java文件位于这里--

Phone2.class 位于包内classes --

我的classpath 设置为 c:\myJavaProject。

Java 文件包含一些来自 Mala Gupta 的简单代码,用于测试实例和局部变量。以下是代码:

package classes;
class Phone2 {
    String phoneNumber = "123456789";
    void setNumber () {
        String phoneNumber;
        phoneNumber = "987654321";
    }
}


package classes;
class TestPhone2 {
    public static void main (String[] args) {
        Phone2 p1 = new Phone2();
        p1.setNumber();
        System.out.println(p1.phoneNumber);
    }
}

我不清楚为什么 TestPhone2.java 无法编译。我查看了有关此类错误的一些 stackoverflow 帖子(herehere),但这些帖子似乎并不直接。其中一篇文章处理了static 方法,另一篇文章处理了源自importpackage 语句的错误。我认为我的 package 声明没有错误,因为我今天早些时候在 here 的帖子中使用了类似的 package 声明并且没有问题。

以下是我的确切击键。

感谢您的反馈。

【问题讨论】:

  • 虽然我尊重您希望通过在丛林中寻找自己的食物等来“Rambo”通过开发方式(即手动处理类路径和构建问题),但我强烈建议您使用 IDE(即使用镇上的麦当劳)

标签: java compiler-errors javac identifier


【解决方案1】:

你有一个包裹。所以你必须指定类路径。一种方法是使用包含顶级包 (c:\myJavaProject\tint31\) 的文件夹,例如

set CLASSPATH=c:\myJavaProject\tint31\
javac -d . TestPhone2.java

或者你可以使用-classpath 喜欢

javac -d . -classpath c:\myJavaProject\tint31\ TestPhone2.java

【讨论】:

  • 工作就像魅力!从今天早些时候在我的帖子here 中的 Sotirios Delimanolis 评论中,他提到我不需要将..\mobile 放在classpath 中,在这种情况下转换为..\tint31。现在我对正确的经验法则感到困惑。
  • @sedeh 对不起。但是不,您将 mobile 更改为 classes。和C:\myJavaProjectC:\myJavaProject\tint31。 Java 包被有效地映射到目录(或作为目录存储在基于 zip 的归档文件中,称为 jars、ears 和/或 wars)。
  • 好的。我懂了。在这种情况下,我的目录结构中多了一层。所以我需要在目标文件夹之前包含级别。在这种情况下,我最多需要包含..\tint31。对吗?
  • @sedeh 除非他们改变了 像 [a] 魅力 的含义。重要的是你理解它。
猜你喜欢
  • 2013-09-14
  • 2013-08-20
  • 2017-12-02
  • 2015-12-12
  • 2021-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-14
相关资源
最近更新 更多