【发布时间】:2021-07-20 14:12:07
【问题描述】:
我使用 Intellj 创建了一个项目(实际上是 Spring,但我发现这个问题在 Java 项目和 Spring 项目之间没有任何关系),其层次结构如下:
- 项目名称
-
源代码
-
主要
-
java
-
com.x.y
-
controller_package
- controller_class.java
-
model_package
- model_class.java
-
controller_package
-
com.x.y
-
资源
- THIS.JAR
-
java
-
主要
-
源代码
不太明白,在java目录的层面上,我可以创建一个java类,可以直接使用THIS.JAR中的类>,而那些包中的文件,即 controller_class.java,我在 THIS.JAR中找不到 java 类>。在前一种情况下,当我在 THIS.JAR 中输入 THAT_CLASS 时,工具提示会弹出 Default package。
this.jar是我自己在另一个项目中创建的jar文件,我用的是Maven,pom.xml已经配置好了。此 .jar 包含一些其他模块,例如 postgresql/antlr。但在 java 目录 和 controller_package 的两个级别上,我都可以导入这些模块。我四处寻找,没有找到解决办法。作为 Java 新手,它毁了我的一天,请问有没有人可以提供帮助?
【问题讨论】:
-
您在“this.jar”中的类似乎在默认包中(即没有
package x.y;语句)。根据stackoverflow.com/questions/283816/…,您不能从包内的类中使用默认包中的类。 -
使用 Maven 时,只需将您的库作为依赖项添加到您的
pom.xml中。永远不要向资源中添加 JAR。 -
@ThomasKläger this.jar中我想要的类完全没有com.xxx.yyy这样的形式,包含的可以导入的类都是com.xxx.yyy的形式。我想这就是原因...但是我不太确定如何在 IDEA 中将该项目打包成 x.y 的形式,因为我需要 ANTLR4 并且很难更改目录...
-
@ThomasKläger 我尝试使用反射,但似乎无法在默认包中找到类......奇怪。无论如何,非常感谢
-
@GyroGearless 感谢您的建议。在多次尝试配置 pom.xml 之后,我认为默认包是原因