java - java报错包不存在

标签 java import package

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

  • java代码

    • 测试器.java
    • 我的包

      • 补习类

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

algo.java:6: error: package pack does not exist
import pack.Cram;
           ^

最佳答案

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

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

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

并定义了以下类:

测试器.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”目录中

classes
   Tester.class
   mypackage
       Cram.class

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

> java -cp classes Tester

并产生输出:

Hello from Cram!

如果您像库一样与 Tester.java 分开编译包,那么您可以做同样的事情,只需使用一些单独的命令。

编译mypackage.Cram:

> javac -d classes mypackage/Cram.java

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

> javac -d classes Tester.java

然后运行:

> java -cp classes Tester

产生相同的输出。

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

关于java - java报错包不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30656319/

相关文章:

java - 令人困惑的增量使用

reflection - 在运行时导入脚本

java - 如何限制对 Eclipse Java 项目中的包的访问

java - 将 org.apache.commons 导入 android 应用程序

java - 为什么没有将 WAR 文件导入 Eclipse 的选项?

Npm 发布到私有(private)范围不断失败

java - 演示 java 中的包名称冲突

java - Netty - connectTimeoutMillis 与 ReadTimeoutHandler

java - 如何从 Java 中的注释处理器获取项目的工作目录

java - 编译 jasper 报告时未解析的符号