Java编译错误:包不存在。

4
在我的工作区(wsPrivate)中,我有3个Gradle项目。
  • Hangman
  • PixelView
  • Reports
PixelView和Reports项目可以正常编译。然而,Hangman使用这两个项目,在编译时无法找到包。
请参见下面的错误(出现在编译Hangman时):
D:\_wsGitlab\wsPrivate\Hangman\src\main\java\game\core\Game.java:10: error: package hangman does not exist
import hangman.Messages;
              ^
D:\_wsGitlab\wsPrivate\Hangman\src\main\java\game\core\Game.java:13: error: package viewer does not exist
import viewer.Box;
             ^
D:\_wsGitlab\wsPrivate\Hangman\src\main\java\game\core\Game.java:14: error: package viewer.figures.boxes does not exist
import viewer.figures.boxes.Borders;

我已经阅读了关于类路径和如何解决这个[在我看来]“范围问题”的几乎所有信息,也尝试了多种解决方案,但我觉得情况变得更糟了。 在不编译eclipse的情况下,程序可以正常工作,因此我认为其中的代码是正确的。
我现在已经被卡了3天,如果有人能够解释一下我偏离了哪条路线,那就太好了。如果需要更多信息:请问;)
所以这基本上是我目前拥有的:
我的包布局和添加的库:

layout of my packages and added library

我添加到“猜词游戏”中的自定义库:

Custom library that I've added to Hangman

项目“Hangman”的构建路径上的项目:

Projects on build path of project Hangman

项目“猜词游戏”的订单和导出:

Order and export of project Hangman

另外两个被引用的项目(pixelview / reports):

Other two projects that are referenced

最后是我的build.gradle文件:
apply plugin: 'application'

mainClassName = "game.core.Game"

repositories {
    jcenter()
}

dependencies {
    compile 'org.apache.commons:commons-math3:3.6.1'
    implementation 'com.google.guava:guava:23.0'
    testImplementation 'junit:junit:4.12'
}

jar {
    baseName = 'HangmanGame'
    version = '2.00.0'
    manifest {
        attributes(
        'Class-Path': configurations.compile.collect { it.getName() }.join(' '),
        'Main-Class': 'game.core.Game'
        )
    }
}

我在您发布的任何图片中都没有看到“hangman”软件包。 - Dave Newton
我已经更新了描述,包括报告(包含hangman)的包布局和PixelView的包布局。 - Jan Bob
只是为了澄清,Eclipse中的项目可以正确编译和运行,而Gradle存在编译错误,对吗? - thokuest
@thokuest,“PixelView”和“Reports”编译正常,因此gradle没有给我gradle特定的错误(gradle文件中的任何内容都没有出错)。我总是使用gradle项目,但我不必导入任何mavenCentral导入或其他东西(只有基本的junit和一些工具),问题是: Hangman需要PixelView和Reports,但不知何故Hangman无法访问它们。 - Jan Bob
2个回答

1
你说你有三个项目-我理解为一个Gradle项目,其中包含三个独立的Gradle子项目。
如果是这样的话,你需要在根目录下创建一个settings.gradle文件,并填写如下内容:
include 'Hangman', 'PixelView', 'Reports'

您可以在Gradle文档中了解更多关于编写多项目Gradle构建的内容。


1
很抱歉要说这是三个独立的Gradle项目,其中“PixelView”和“Reports”是“java-library”,而Hangman则有插件:“application”。 - Jan Bob
这个对我很有帮助:https://docs.gradle.org/current/userguide/java_library_plugin.html - Eugene Gr. Philippov

0

在docker uBuntu(没有安装Android Studio)下,我遇到了同样的问题,尽管所有设置都按照上面所示进行了设置,但仍然出现了相同的错误。

然后我发现项目根目录下没有local.properties文件,在从另一个项目复制了local.properties文件,并正确设置了ndk和sdk路径之后,多个项目成功构建。我的ndk/sdk路径可能与你的不同。

此外,即使缺少以下文件:local.properties(第一次构建后会出现)、gradlew、gradlew.bat、gradle-wrapper.jar,该项目在其他已安装Android Studio的计算机上也可以成功构建。

ndk.dir=/home/username/Android/Sdk/ndk-bundle
sdk.dir=/home/username/Android/Sdk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接