我被一个不应该发生的编译错误package sg.ncl.service.authentication.data.jpa does not exist完全吓呆了。
我有一个分级多项目,我试图更新到SpringBoot1.4.0。存储库位于https://github.com/nus-ncl/services-in-one/tree/DEV-483。
更新: 1:每当我使用以下命令之一时:
./gradlew clean build
./gradlew clean assemble check
./gradlew clean assemble test它们将导致以下错误。
D:\git\services-in-one\service-registration\src\test\java\sg\ncl\service\registration\logic\RegistrationServiceTest.java:16: error: package sg.ncl.service.authentication.data.jpa does not exist
import sg.ncl.service.authentication.data.jpa.CredentialsEntity;
^
D:\git\services-in-one\service-registration\src\test\java\sg\ncl\service\registration\Util.java:4: error: package sg.ncl.service.authentication.data.jpa does not exist
import sg.ncl.service.authentication.data.jpa.CredentialsEntity;
^
D:\git\services-in-one\service-registration\src\test\java\sg\ncl\service\registration\Util.java:120: error: cannot find symbol
public static CredentialsEntity getCredentialsEntity() {
^
symbol: class CredentialsEntity
location: class Util
D:\git\services-in-one\service-registration\src\test\java\sg\ncl\service\registration\Util.java:127: error: cannot find symbol
public static CredentialsEntity getInvalidCredentialsEntity() {
^
symbol: class CredentialsEntity
location: class Util
D:\git\services-in-one\service-registration\src\test\java\sg\ncl\service\registration\web\RegistrationControllerTest.java:22: error: package sg.ncl.service.authentication.data.jpa does not exist
import sg.ncl.service.authentication.data.jpa.CredentialsEntity;
^
5 errors
:service-registration:compileTestJava FAILED但是,当我使用以下任何命令时,不会发生编译错误。
./gradlew clean :service-registration:build
./gradlew clean :service-registration:compileTestJava
./gradlew clean compileTestJava
./gradlew clean check更新2:有趣的是,如果我使用./gradlew :service-registration:build build,就不会出现错误。
我意识到,我无法提出一个简化的例子,并为不便道歉。不过,我希望能在这个问题上得到任何帮助。
发布于 2016-08-06 06:13:20
从引导1.4开始,可执行jar文件在BOOT-INF/classes中存储已编译的类。这意味着当简单地将jar添加到类路径时,它们是不可访问的。您正在将模块打包为可执行的jar文件,并尝试将其用作依赖项。当您将其用作依赖项时,它的jar将被添加到类路径中。如果jar被重新打包到可执行存档中,那么它的类是不可见的,编译失败就会发生。
最简单的更改是禁用项目jar的重新打包:
bootRepackage {
enabled = false
}https://stackoverflow.com/questions/38799919
复制相似问题