Java 包不存在错误

Posted

技术标签:

【中文标题】Java 包不存在错误【英文标题】:Java Package Does Not Exist Error 【发布时间】:2011-09-16 12:57:01 【问题描述】:

所以在根目录下有一个文件夹/usr/share/stuff

在里面有一堆 java 文件,顶部有 package org.name 定义

我正在运行javac test.java,其中test.java 在子域中

我将/usr/share/stuff 添加到我的课程路径中。

test.java 的顶部添加import org.name

但我收到 package does not exist 错误...为什么?

【问题讨论】:

假设你已经把java文件编译到了正确的目录(类文件在“/usr/share/stuff/org/name”),你还需要将实际文件或者通配符导入到test.java('import org.name.MyClass' 或 'import org.name.*')。如果您只是执行“import org.name”,则会发生此错误(请问我是怎么知道的,哈哈) 这是运行时异常还是编译时异常? 【参考方案1】:

它们在正确的子目录中吗?

如果您将/usr/share/stuff 放在类路径中,则使用package org.name 定义的文件应该在/usr/share/stuff/org/name 中。

编辑:如果您还不知道这一点,您可能应该阅读this doc about understanding classpath。

编辑 2:抱歉,我没有意识到您在谈论 /usr/share/stuff 中的 Java 源文件。它们不仅需要位于适当的子目录中,而且您需要编译它们。 .java 文件不需要位于类路径,而是位于源路径。 (生成的.class 文件需要在类路径中。)

如果它们不在正确的目录结构下,您可能不会编译它们,但它们应该是,否则至少会产生警告。生成的类文件将位于正确的子目录中(如果有,则在您指定 -d 的位置)。

您应该使用javac -sourcepath .:/usr/share/stuff test.java 之类的东西,假设您已将/usr/share/stuff 下的.java 文件放在/usr/share/stuff/org/name 下(或根据它们的包名称适当的任何内容)。

【讨论】:

谢谢!......这仍然没有工作......我已经这样做了,但它仍然说找不到包。编辑子域上的类路径就足够了吗?还是需要在根目录下编辑?【参考方案2】:

只是重新导入不起作用。以下对我有用。

文件 -> 使缓存无效/重新启动

然后

构建 -> 重建项目

这将重新导入 maven 项目。

【讨论】:

这很有用。为我工作。【参考方案3】:

我遇到了这个问题,在我的应用程序中尝试使用打包为 .jar 的主题时,它在调试应用程序时可以工作,但在构建/导出应用程序时却没有。

我通过解压缩jar 解决了这个问题,并将其内容手动添加到我的构建文件夹中,结果如下:

project/
   │
   ├── build 
   │   └── classes
   │       ├── pt
   │       │   └── myAppName ... 
   │       └── com
   │           └── themeName ...
   ├── src
   └── lib

我不再有错误,我的应用加载了预期的主题。

【讨论】:

这可行,但方法错误;您应该改为更改设置以在导出时将 .jar 包含在 .jar 中。【参考方案4】:

您需要将org/name 目录放在/usr/share/stuff 并将您的org.name 包源放在此目录中。

【讨论】:

【参考方案5】:

我在通过命令行手动编译时遇到了完全相同的问题,我的解决方案是我没有包含 -sourcepath 目录,这样所有子目录的 java 文件也会被编译!

【讨论】:

【参考方案6】:

右键单击您的 Maven 项目 在下拉列表的底部 Maven >> 重新导入

它适用于我缺少的依赖项

【讨论】:

【参考方案7】:

如果您在使用 Kotlin 时遇到此问题并拥有

kotlin.incremental=true
kapt.incremental.apt=true

gradle.properties 中,然后您需要暂时删除它以修复构建。

构建成功后,您可以在使用 Kotlin 时再次添加这些属性以加快构建时间。

【讨论】:

【参考方案8】:

您应该在您的 gradle 构建文件 (build.gradle) 中添加以下行

dependencies  
     compile files('/usr/share/stuff')
     ..

【讨论】:

【参考方案9】:

如果您有 2020 版本,那么您很可能遇到了一个错误,就像我遇到的那个。尝试了多种方法,但帮助我的是一件非常简单的事情。 设置 -> 构建、执行、部署 -> 构建工具 -> Maven。 勾选 Override of Local Repository,但保留默认值。申请,好的。你可以得到一个错误,没关系。只需在屏幕右侧的 Maven 选项卡中按“重新加载所有 Maven 项目”按钮(两个圆形箭头,看起来像常规刷新按钮)。也许清洁和安装。之后应该可以工作。

【讨论】:

以上是关于Java 包不存在错误的主要内容,如果未能解决你的问题,请参考以下文章

编译错误 - 包不存在 - Java

程序包java.time不存在

Spring Boot应用程序失败-错误java包不存在

java 提示包不存在

包不存在错误 - 无法在目录中找到包[重复]

Spring源码报错:错误: 程序包jdk.jfr不存在