2013-03-08 36 views
6

我想在另一个.java文件中授予一个.java文件访问权限。我想在命令行上执行此操作。例如,我将如何使用下面的两个文件来做到这一点?两个java文件,在同一目录中,一个访问其他类/ s?

文件: “ToImport.java”

package ABC; 
public class ToImport { 
    private String aName; 
    public ToImport(String Name) { 
     aName = Name; 
    } 
    public String toString() { 
     return("Text: " + aName); 
    } 
} 

文件: “TheImport.java”

package ABC; 
public class TheImport { 
     public static void main(String[] args) { 
     ToImport abc = new ToImport("a"); 
     System.out.println("TEST: " + abc); 
    } 
} 

当我键入javac ToImport.java我没有得到任何错误,但是当我键入javac TheImport.java我得到以下错误,

Command Prompt Error Message

+0

类都放在如何和从那里你运行java – 2013-03-08 21:45:53

+3

最有可能你是从目录调用'javac'在这两个文件位于。它们都需要位于名为“ABC”(包名称)的目录中,并且需要从包含“ABC”的目录调用“javac ABC \ TheImport.java”。无论如何,这是我的猜测。 – iamnotmaynard 2013-03-08 21:50:22

+0

因为这两个文件都在同一个包中并声明为公共,那么你不需要担心调用,只需创建对象就够了,但问题是,正如雪茄所说的那样,你如何编译它 – 2013-03-08 22:00:46

回答

6

TheImport取决于类别ToImport。因此,编译TheImport时,编译器必须也编译ToImport或有权访问已编译的ToImport类。

假设你有一个目录,看起来像下面

src 
└── ABC 
    ├── TheImport.java 
    └── ToImport.java 

除了让我们说你在目录src,并希望编译为../classes。您必须使用以下命令之一:

javac -d ../classes ABC/ToImport.java ABC/TheImport.java 

javac -d ../classes ABC/ToImport.java 
javac -cp ../classes -d ../classes ABC/TheImport.java 

如果这两个文件.java依赖于对方,那么你就必须一次编译它们既作为第一个命令。

另请注意,软件包应全​​部小写,以遵守Java命名约定。

要运行主程序,您可以键入,

cd ../classes 
java ABC.TheImport 
在哪个目录
+0

很好的解释 – 2013-03-08 22:03:20

+0

完美的答案。你可以在'-cp'本身编译的时候添加外部jar,并且它们应该'''分开。您还必须在使用'java'命令运行类文件时传递罐子。 – backslashN 2017-09-02 07:40:43

3

从包装包含.java文件年龄运行:

javac *.java 

javac TheImport.java ToImport.java 

编译器需要在同一时间编译两个类,它不能单独编译一个类与另一个依赖。

+0

编译器不会'不得不同时编译两个类。它可以编译一个,然后使用'javac'参数'-cp'编译另一个依赖它的程序,就像JB Nizet对这个问题的回答一样。 – Max 2016-11-10 04:28:09

相关问题