0

如何为不同的文件创建 Java 包?我尝试了以下方法。我做错了什么?什么是正确的程序?

第一个文件是:

package dil;
public class Hello
{
    Support sp=new Support();
    int i=sp.tin();
    public void man()
    {
       System.out.println(i);
    }
}

第二个文件是:

package dil;
class Support
{
    public int tin()
    {
        return 3;
    }
}

现在,当我编译 hello.java 时,它显示了以下错误:

Hello:4:cannot find symbol
symbol: class Support
location: class dil.hello
Support sp=new Support();
               ^
Hello:4:cannot find symbol
symbol: class Support
location: class dil.hello
Support sp=new Support();
^

问题出在哪里,如何将这两个文件放在一个包中?

文件位于 c:\src 中。

4

6 回答 6

1

尽管 Support 类不是公开的,但这不会成为问题,因为两个类共享同一个包。我的猜测是您没有根据它们的包名将两个源文件放入一个目录中,并从 hello.java 所在的当前目录调用 javac 编译器。

如果一个类在包 ab 中,这意味着项目结构应该包含一个包含 yourclass.java 的文件夹 ./a/b。

在您的情况下,尝试创建一个名为 ./dil 的文件夹,将源文件放入其中并从其父文件夹调用 javac。

于 2009-10-09T11:35:22.880 回答
1

请参阅Sun 的 Java 教程中的创建和使用包,以了解在 Java 中使用包的所有详细信息。

于 2009-10-09T13:06:53.413 回答
1

假设 UNIX / Linux 路径名、UNIX shell 等,您需要以下文件结构:

/some/where/dil
/some/where/dil/hello.java
/some/where/dil/Support.java

然后设置$CLASSPATH/some/where, 并使用命令编译

cd /some/where
javac dil/*.java

并使用

java dil.hello

或者,您可以通过命令行选项来判断要使用的类路径javajavac-cp

您还应该修复代码中的以下错误:

  1. 将“hello”类的名称更改为“Hello”,并重命名源文件以匹配。严格来说这不是错误,但它严重违反了 Java 类命名标准。
  2. 您将成员声明为“十”,但将其称为“锡”。修复一个或另一个。
  3. “hello”类中的入口点方法应该称为“main”而不是“man”,并且应该有一个签名public static void main(String[] arg)。如果您不修复这些代码将编译,但该java命令将找不到入口点并且会失败。
于 2009-10-09T13:08:05.097 回答
0

我发现了一些你必须检查的东西:

  • hello类以小写字母开头
  • hello类调用sp.ten()而不是sp.tin()
于 2009-10-09T11:30:08.620 回答
0

Support不是public。将其公开并重试。

于 2009-10-25T10:39:53.320 回答
0

我建议您尝试使用 Netbeans、Eclipse 或 IntelliJ CE 等免费 IDE 之一。这将帮助您开始编码,而不是硬性地设置所有内容。

顺便说一句:这些 IDE 可以快速修复大多数常见问题,因此它们不仅会为您提供错误,还会为您提供修复它们并为您解决问题的选项。

于 2009-10-25T11:27:12.733 回答