Java 如何为不同的文件创建包?

Java 如何为不同的文件创建包?,java,package,Java,Package,如何为不同的文件创建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 i

如何为不同的文件创建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中。

我发现了一些您必须检查的内容:

  • 类hello以小写开头
  • 类hello调用sp.ten()而不是sp.tin()

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

  • 类hello以小写开头
  • 类hello调用sp.ten()而不是sp.tin()

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

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


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

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

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


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

请参阅Sun的Java教程以了解使用Java包的所有细节。

请参阅Sun的Java教程以了解使用Java包的所有细节。

假设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
或者,您可以告诉
java
javac
使用
-cp
命令行选项的类路径

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

  • 将“hello”类的名称更改为“hello”,并重命名源文件以匹配。严格来说,这不是一个错误,但它严重违反了命名Java类的标准
  • 您将一个成员声明为“十”,但将其称为“锡”。修理一个或另一个
  • “hello”类中的入口点方法应该称为“main”而不是“man”,并且应该有一个签名
    publicstaticvoidmain(String[]arg)
    。如果不解决这些问题,代码将被编译,但是
    java
    命令将找不到入口点,并且将失败

  • 假设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
    
    或者,您可以告诉
    java
    javac
    使用
    -cp
    命令行选项的类路径

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

  • 将“hello”类的名称更改为“hello”,并重命名源文件以匹配。严格来说,这不是一个错误,但它严重违反了命名Java类的标准
  • 您将一个成员声明为“十”,但将其称为“锡”。修理一个或另一个
  • “hello”类中的入口点方法应该称为“main”而不是“man”,并且应该有一个签名
    publicstaticvoidmain(String[]arg)
    。如果不解决这些问题,代码将被编译,但是
    java
    命令将找不到入口点,并且将失败

  • 支持
    不是
    公共的
    。将其公开并重试。

    支持
    不是公开的。公开并重试。

    我建议您尝试使用一种免费的IDE,如Netbeans、Eclipse或IntelliJ CE。这将帮助您开始编写代码,而不是将所有内容都设置为困难的方式


    顺便说一句:这些IDE对大多数常见问题都有快速修复功能,因此它们不仅可以为您提供错误信息,还可以为您提供修复错误的选项。

    我建议您尝试使用一种免费的IDE,如Netbeans、Eclipse或Intellice。这将帮助您开始编写代码,而不是将所有内容都设置为困难的方式


    顺便说一句:这些IDE对大多数常见问题都有快速修复,因此它们不仅为您提供了错误,还为您提供了修复这些错误并为您执行这些操作的选项。

    这里有些不对劲。你能给这两个文件使用你的文件夹结构吗?以及如何编译它(包括编译的当前目录)。你能给这两个文件使用你的文件夹结构吗?事实上,我已经把两个文件放在同一个目录中,编辑了ten()并使其成为tin(),但它仍然不起作用……关键可能在于javac需要一个指向根包文件夹的类路径。(例如:如果您的源代码位于/tmp/dil中,请以sourcepath的形式从/tmp运行编译器。)事实上,我已经将这两个文件放在同一个目录中,编辑了ten()并使其成为tin(),但它仍然不起作用……关键可能在于javac需要一个指向根包文件夹的类路径。(例如:如果您的源代码位于/tmp/dil中,请从/tmp作为sourcepath运行编译器。)文件名应为Hello.java,大写字母为“H”。是。。。这就是问题所在!但是如果你看看问题的原始版本