错误包不存在java

问题描述 投票:0回答:2

我正在尝试导入我创建的包,我的文件结构如下:

  • javacode tester.java mypackage的 Cram.class

在我的测试人员中,我使用:import mypackage.Cram;导入包但当我尝试编译我的tester.java时,我收到以下错误:包mypackage不存在。任何帮助将非常感激。这是错误; algo是我的tester.java和pack是mypackage。

algo.java:6: error: package pack does not exist
import pack.Cram;
           ^
java import packages
2个回答
1
投票

如果您同时编译所有文件,那么您应该能够按原样使用代码,前提是您已正确定义了类,并且在package关键字指示的目录结构中。

假设您有以下目录树(如原始帖子中所示):

javacode
    Tester.java
    mypackage
        Cram.java
    classes
        <.class files will be placed here later>

并定义了以下类:

tester.Java:

import mypackage.Cram;

public class Tester {
    public static void main(String[] args) {
        Cram c = new Cram();
        c.doSomething();
    }
}

cram.Java:

package mypackage;

public class Cram {
    public void doSomething() {
        System.out.println("Hello from Cram!");
    }
}

您可以使用以下命令将所有这些文件编译到一个目录中(通常,IDE将编译为“classes”或“bin”目录):

> javac -d classes Tester.java mypackage\Cram.java

这会将所有类文件放在“类”目录中

classes
   Tester.class
   mypackage
       Cram.class

然后您可以使用以下命令运行:

> java -cp classes Tester

并产生输出:

Hello from Cram!

如果您正在将程序包与Tester.java分开编译,就像库一样,那么您可以使用一些单独的命令执行相同的操作。

编译mypackage.Cram

> javac -d classes mypackage/Cram.java

这会将.class文件放在相同的classes目录中。当您尝试编译Tester.java(使用mypackage.Cram)时,您只需告诉编译器您的类在哪里:

> javac -d classes Tester.java

然后运行:

> java -cp classes Tester

产生相同的输出。

我的猜测是,你的类和名称都被破坏了,Java希望它们遵循一个约定。


0
投票

编译时,它正在寻找.java文件。将Cram.java文件放在那里,然后再次尝试编译。

在Algo.java中更改您的导入。你正在寻找pack.Cram,你已经表明它是mypackage.Cram。

© www.soinside.com 2019 - 2024. All rights reserved.