所以,在根目录下有一个名为/usr/share/stuff
的文件夹。
在stuff文件夹中,有许多带有顶部package org.name
定义的java文件。
我正在运行javac test.java
,其中test.java
位于子域中。
我将/usr/share/stuff
添加到我的类路径中。
在test.java
的顶部,我添加了import org.name
但是我收到一个package does not exist
错误……为什么?
所以,在根目录下有一个名为/usr/share/stuff
的文件夹。
在stuff文件夹中,有许多带有顶部package org.name
定义的java文件。
我正在运行javac test.java
,其中test.java
位于子域中。
我将/usr/share/stuff
添加到我的类路径中。
在test.java
的顶部,我添加了import org.name
但是我收到一个package does not exist
错误……为什么?
仅重新导入无效,以下是我的解决方法。
文件 -> 无效缓存/重启
然后
构建 -> 重新构建项目
这将重新导入Maven项目。
他们是否在正确的子目录中?
如果你把/usr/share/stuff
放到类路径上,那么以package org.name
定义的文件应该在/usr/share/stuff/org/name
中。
编辑:如果你还不知道这个,那么你应该阅读一下了解类路径的文档。
编辑2:对不起,我之前没意识到你是在谈论位于/usr/share/stuff
中的Java源代码文件。它们不仅需要位于适当的子目录中,而且你需要编译它们。.java
文件不需要在classpath上,而是在源路径上。(生成的.class
文件需要在classpath上。)
如果它们没有位于正确的目录结构下,你可能可以通过编译它们来摆脱错误,但至少会生成警告。生成的类文件将位于正确的子目录中(如果你指定了-d
的话)。
你应该使用类似于javac -sourcepath .:/usr/share/stuff test.java
这样的东西,假设你已经把位于/usr/share/stuff
下的.java
文件放在了/usr/share/stuff/org/name
下(或根据它们的包名适当地放置)。
我遇到了一个问题,当我在我的应用程序中尝试使用以.jar
打包的主题时,在调试应用程序时它可以工作,但是在构建/导出应用程序时它就不能正常工作。
我通过解压缩 jar
文件并将其内容手动添加到我的构建文件夹中来解决这个问题,最终结果如下:
project/
│
├── build
│ └── classes
│ ├── pt
│ │ └── myAppName ...
│ └── com
│ └── themeName ...
├── src
└── lib
我不再有错误,并且我的应用程序已经使用预期的主题加载。
/usr/share/stuff
目录下创建 org/name
文件夹,并将 org.name
包源代码放置在该文件夹中。右键单击您的Maven项目,在下拉列表底部,选择 Maven >> 重新导入
对于缺失的依赖项,这对我很有效
当我通过命令行手动编译时,我遇到了完全相同的问题。我的解决方案是没有包括-sourcepath目录,这样所有子目录中的Java文件也会被编译!
如果您使用的是2020版本,那么您很可能遇到了像我一样的错误。尝试了多种方法,但对我有帮助的是一个非常简单的方法。 设置 -> 构建、执行、部署 -> 构建工具 -> Maven。 选中本地存储库的覆盖,但保留默认值。应用,确定。您可能会收到错误提示,这没关系。只需在屏幕右侧的Maven选项卡上按下“重新加载所有Maven项目”按钮(两个圆形箭头,看起来像普通的刷新按钮)。也许需要清理和安装。之后应该就可以正常工作了。
mvn clean install --update-snapshots
。我解决了。在IntelliJ IDEA中:
这样就解决了我的问题!