我无法从另一个目录导入软件包

时间:2019-08-14 09:18:37

标签: java import package

我想创建两个软件包:一个包含特定于问题的类和方法,另一个包含一些典型的数学工具。 我将它们表示为“ maxim.main_package”和“ maxim.algebra”。 由于某种原因,我无法将代数包导入到主包中。 请帮忙。

由于代数软件包不依赖主要软件包,因此我已通过命令行将.java文件成功编译为.class。 .java文件以“ package maxim.algebra;”开头。 现在,我要编译以“ package maxim.main;”开头的主要.java文件。其次是“导入代数。*”。 .java文件的路径分别是:

1) maxim\main\main.java
2) maxim\algebra\algebra.java
I run "javac maxim\main\main.java" command from maxim directory. 
It fails saying:

    `error: cannot access Algebra
    Algebra.matrix3x3 R = Algebra.some_method(parameters)
    bad class file: .\algebra\Algebra.class
    class file contains wrong class: maxim.algebra.Algebra`

1 个答案:

答案 0 :(得分:0)

软件包名称和目录结构需要匹配。案件很重要。然后,这些软件包也需要在classpath上可用。默认情况下,当前目录位于类路径中。但是可以使用环境变量CLASSPATH更改类路径。如果定义了此变量并且.(当前目录)不在其中,则当前目录将不在类路径中。也可以使用参数-classpath-cp来简短地设置类路径。另请参见Setting the Class Path

这是有关如何将类放入包中以及如何从不同包中导入类的简短指南:

您有两个软件包,maxim.mainmaxim.algebra。我们从当前目录开始,在此目录中,我们创建两个以软件包名称maxim\mainmaxim\algebra命名的目录。

> mkdir maxim\main maxim\algebra
> dir
2019-08-14  12:39    <DIR>          .
2019-08-14  12:39    <DIR>          ..
2019-08-14  12:39    <DIR>          maxim

> dir maxim
2019-08-14  12:39    <DIR>          .
2019-08-14  12:39    <DIR>          ..
2019-08-14  12:41    <DIR>          algebra
2019-08-14  12:46    <DIR>          main

>

我们创建两个类,Main.java,文件名为maxim\main\Main.java,内容如下:

package maxim.main;

import maxim.algebra.Algebra;

public class Main {
    public static void main(String... args) {
        Algebra algebra = new Algebra();
        System.out.println(algebra.sayHello() + " World");
    }
}

Algebra.java,文件名maxim\algebra\Algebra.java和以下内容:

package maxim.algebra;

public class Algebra {
    public String sayHello() {
        return "Hello";
    }
}

在不更改活动目录的情况下,我们首先编译两个类,Algebra

> javac -cp . maxim\algebra\Algebra.java maxim\main\Main.java

>

我们指定-cp .覆盖可能设置的任何CLASSPATH环境变量。

编译后,目录结构如下:

.\
  maxim\
    main\
      Main.class
      Main.java
    algebra\
      Algebra.class
      Algebra.java

现在我们可以运行Main类:

> java -cp . maxim.main.Main
Hello World

>
相关问题