Gradle Java编译错误使用模式匹配instanceof & switch表达式

jutyujz0  于 5个月前  发布在  Java
关注(0)|答案(1)|浏览(72)

编译Gradle Java项目时出现以下错误:

> Task :compileJava FAILED
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\commands\CommandsManager.java:52: error: ')' expected
                    if (sender instanceof Player player) {
                                                ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\commands\CommandsManager.java:52: error: not a statement
                    if (sender instanceof Player player) {
                                                 ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\commands\CommandsManager.java:52: error: ';' expected
                    if (sender instanceof Player player) {
                                                       ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\commands\CommandsManager.java:56: error: 'else' without 'if'
                    } else
                      ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\commands\RecipesCommand.java:38: error: ')' expected
                    if (sender instanceof Player player) {
                                                ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\commands\RecipesCommand.java:38: error: not a statement
                    if (sender instanceof Player player) {
                                                 ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\commands\RecipesCommand.java:38: error: ';' expected
                    if (sender instanceof Player player) {
                                                       ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\commands\RecipesCommand.java:54: error: 'else' without 'if'
                    } else
                      ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\commands\RecipesCommand.java:66: error: ')' expected
                    if (sender instanceof Player player) {
                                                ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\commands\RecipesCommand.java:66: error: not a statement
                    if (sender instanceof Player player) {
                                                 ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\commands\RecipesCommand.java:66: error: ';' expected
                    if (sender instanceof Player player) {
                                                       ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\commands\RecipesCommand.java:72: error: 'else' without 'if'
                    } else
                      ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\commands\RecipesCommand.java:81: error: ')' expected
                    if (sender instanceof Player player) {
                                                ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\commands\RecipesCommand.java:81: error: not a statement
                    if (sender instanceof Player player) {
                                                 ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\commands\RecipesCommand.java:81: error: ';' expected
                    if (sender instanceof Player player) {
                                                       ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\commands\RecipesCommand.java:84: error: 'else' without 'if'
                    } else
                      ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\commands\RecipesCommand.java:93: error: ')' expected
                    if (sender instanceof Player player) {
                                                ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\commands\RecipesCommand.java:93: error: not a statement
                    if (sender instanceof Player player) {
                                                 ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\commands\RecipesCommand.java:93: error: ';' expected
                    if (sender instanceof Player player) {
                                                       ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\commands\RecipesCommand.java:96: error: 'else' without 'if'
                    } else
                      ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\commands\RecipesCommand.java:107: error: ')' expected
                    if (sender instanceof Player player) {
                                                ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\commands\RecipesCommand.java:107: error: not a statement
                    if (sender instanceof Player player) {
                                                 ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\commands\RecipesCommand.java:107: error: ';' expected
                    if (sender instanceof Player player) {
                                                       ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\commands\RecipesCommand.java:110: error: ')' expected
                        if (recipe instanceof FurnaceBuilder furnace) {
                                                            ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\commands\RecipesCommand.java:110: error: not a statement
                        if (recipe instanceof FurnaceBuilder furnace) {
                                                             ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\commands\RecipesCommand.java:110: error: ';' expected
                        if (recipe instanceof FurnaceBuilder furnace) {
                                                                    ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\commands\RecipesCommand.java:115: error: 'else' without 'if'
                    } else
                      ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\commands\RecipesCommand.java:125: error: ')' expected
                    if (sender instanceof Player player) {
                                                ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\commands\RecipesCommand.java:125: error: not a statement
                    if (sender instanceof Player player) {
                                                 ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\commands\RecipesCommand.java:125: error: ';' expected
                    if (sender instanceof Player player) {
                                                       ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\commands\RecipesCommand.java:133: error: 'else' without 'if'
                    } else
                      ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\commands\ReloadCommand.java:23: error: : expected
                        case "ITEMS" -> reloadItems(sender);
                                    ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\commands\ReloadCommand.java:23: error: illegal start of expression
                        case "ITEMS" -> reloadItems(sender);
                                     ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\commands\ReloadCommand.java:23: error: ';' expected
                        case "ITEMS" -> reloadItems(sender);
                                                   ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\commands\ReloadCommand.java:23: error: not a statement
                        case "ITEMS" -> reloadItems(sender);
                                                    ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\commands\ReloadCommand.java:23: error: ';' expected
                        case "ITEMS" -> reloadItems(sender);
                                                          ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\commands\ReloadCommand.java:24: error: : expected
                        case "PACK" -> reloadPack(OraxenPlugin.get(), sender);
                                   ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\commands\ReloadCommand.java:24: error: illegal start of expression
                        case "PACK" -> reloadPack(OraxenPlugin.get(), sender);
                                    ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\commands\ReloadCommand.java:24: error: ';' expected
                        case "PACK" -> reloadPack(OraxenPlugin.get(), sender);
                                                 ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\commands\ReloadCommand.java:24: error: ';' expected
                        case "PACK" -> reloadPack(OraxenPlugin.get(), sender);
                                                                    ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\commands\ReloadCommand.java:24: error: not a statement
                        case "PACK" -> reloadPack(OraxenPlugin.get(), sender);
                                                                      ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\commands\ReloadCommand.java:24: error: ';' expected
                        case "PACK" -> reloadPack(OraxenPlugin.get(), sender);
                                                                            ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\commands\ReloadCommand.java:25: error: : expected
                        case "RECIPES" -> RecipesManager.reload(OraxenPlugin.get());
                                      ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\commands\ReloadCommand.java:25: error: illegal start of expression
                        case "RECIPES" -> RecipesManager.reload(OraxenPlugin.get());
                                       ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\commands\ReloadCommand.java:25: error: ';' expected
                        case "RECIPES" -> RecipesManager.reload(OraxenPlugin.get());
                                                        ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\commands\ReloadCommand.java:26: error: : expected
                        case "CONFIGS" -> OraxenPlugin.get().reloadConfigs();
                                      ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\commands\ReloadCommand.java:26: error: illegal start of expression
                        case "CONFIGS" -> OraxenPlugin.get().reloadConfigs();
                                       ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\commands\ReloadCommand.java:26: error: ';' expected
                        case "CONFIGS" -> OraxenPlugin.get().reloadConfigs();
                                                      ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\commands\ReloadCommand.java:27: error: : expected
                        default -> {
                               ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\commands\ReloadCommand.java:27: error: illegal start of expression
                        default -> {
                                ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\commands\ReloadCommand.java:27: error: ';' expected
                        default -> {
                                  ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\commands\ReloadCommand.java:34: error: ')' expected
                    }
                     ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\commands\ReloadCommand.java:35: error: illegal start of expression
                });
                 ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\commands\RepairCommand.java:27: error: ')' expected
                    if (sender instanceof Player player) {
                                                ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\commands\RepairCommand.java:27: error: not a statement
                    if (sender instanceof Player player) {
                                                 ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\commands\RepairCommand.java:27: error: ';' expected
                    if (sender instanceof Player player) {
                                                       ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\commands\RepairCommand.java:55: error: 'else' without 'if'
                    } else {
                      ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\commands\RepairCommand.java:65: error: ')' expected
        if (!(itemMeta instanceof Damageable damageable))
                                            ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\commands\RepairCommand.java:65: error: illegal start of expression
        if (!(itemMeta instanceof Damageable damageable))
                                                       ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\commands\RepairCommand.java:65: error: ';' expected
        if (!(itemMeta instanceof Damageable damageable))
                                                        ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\font\Glyph.java:8: error: class, interface, or enum expected
public record Glyph(String name, char character, String texture, int ascent,
       ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\font\Glyph.java:11: error: class, interface, or enum expected
    public JsonObject toJson() {
           ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\font\Glyph.java:13: error: class, interface, or enum expected
        JsonArray chars = new JsonArray();
        ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\font\Glyph.java:14: error: class, interface, or enum expected
        chars.add(String.valueOf(character));
        ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\font\Glyph.java:15: error: class, interface, or enum expected
        output.add("chars", chars);
        ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\font\Glyph.java:16: error: class, interface, or enum expected
        output.addProperty("file", texture);
        ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\font\Glyph.java:17: error: class, interface, or enum expected
        output.addProperty("ascent", 8);
        ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\font\Glyph.java:18: error: class, interface, or enum expected
        output.addProperty("height", height);
        ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\font\Glyph.java:19: error: class, interface, or enum expected
        output.addProperty("type", "bitmap");
        ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\font\Glyph.java:20: error: class, interface, or enum expected
        return output;
        ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\font\Glyph.java:21: error: class, interface, or enum expected
    }
    ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\font\Glyph.java:23: error: class, interface, or enum expected
    public boolean hasPermission(Player player) {
           ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\font\Glyph.java:25: error: class, interface, or enum expected
    }
    ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\items\ItemBuilder.java:71: error: ')' expected
        if (itemMeta instanceof PotionMeta potionMeta) {
                                          ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\items\ItemBuilder.java:71: error: not a statement
        if (itemMeta instanceof PotionMeta potionMeta) {
                                           ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\items\ItemBuilder.java:71: error: ';' expected
        if (itemMeta instanceof PotionMeta potionMeta) {
                                                     ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\items\ItemBuilder.java:80: error: ')' expected
        if (itemMeta instanceof TropicalFishBucketMeta tropicalFishBucketMeta) {
                                                      ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\items\ItemBuilder.java:80: error: not a statement
        if (itemMeta instanceof TropicalFishBucketMeta tropicalFishBucketMeta) {
                                                       ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\items\ItemBuilder.java:80: error: ';' expected
        if (itemMeta instanceof TropicalFishBucketMeta tropicalFishBucketMeta) {
                                                                             ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\items\ItemBuilder.java:280: error: ')' expected
        if (itemMeta instanceof Damageable damageable) {
                                          ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\items\ItemBuilder.java:280: error: not a statement
        if (itemMeta instanceof Damageable damageable) {
                                           ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\items\ItemBuilder.java:280: error: ';' expected
        if (itemMeta instanceof Damageable damageable) {
                                                     ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\items\ItemBuilder.java:287: error: ')' expected
        if (itemMeta instanceof LeatherArmorMeta leatherArmorMeta) {
                                                ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\items\ItemBuilder.java:287: error: not a statement
        if (itemMeta instanceof LeatherArmorMeta leatherArmorMeta) {
                                                 ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\items\ItemBuilder.java:287: error: ';' expected
        if (itemMeta instanceof LeatherArmorMeta leatherArmorMeta) {
                                                                 ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\items\ItemBuilder.java:294: error: ')' expected
        if (itemMeta instanceof PotionMeta potionMeta) {
                                          ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\items\ItemBuilder.java:294: error: not a statement
        if (itemMeta instanceof PotionMeta potionMeta) {
                                           ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\items\ItemBuilder.java:294: error: ';' expected
        if (itemMeta instanceof PotionMeta potionMeta) {
                                                     ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\items\ItemBuilder.java:309: error: ')' expected
        if (itemMeta instanceof SkullMeta skullMeta) {
                                         ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\items\ItemBuilder.java:309: error: not a statement
        if (itemMeta instanceof SkullMeta skullMeta) {
                                          ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\items\ItemBuilder.java:309: error: ';' expected
        if (itemMeta instanceof SkullMeta skullMeta) {
                                                   ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\items\ItemBuilder.java:317: error: ')' expected
        if (itemMeta instanceof TropicalFishBucketMeta tropicalFishBucketMeta) {
                                                      ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\items\ItemBuilder.java:317: error: not a statement
        if (itemMeta instanceof TropicalFishBucketMeta tropicalFishBucketMeta) {
                                                       ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\items\ItemBuilder.java:317: error: ';' expected
        if (itemMeta instanceof TropicalFishBucketMeta tropicalFishBucketMeta) {
                                                                             ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\mechanics\provided\custom\CustomMechanicAction.java:17: error: illegal start of expression
            CustomAction action = switch (params[0]) {
                                  ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\mechanics\provided\custom\CustomMechanicAction.java:17: error: not a statement
            CustomAction action = switch (params[0]) {
                                         ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\mechanics\provided\custom\CustomMechanicAction.java:17: error: ';' expected
            CustomAction action = switch (params[0]) {
                                                    ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\mechanics\provided\custom\CustomMechanicAction.java:18: error: orphaned case
                case "command" -> new CommandAction(params);
                ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\mechanics\provided\custom\CustomMechanicAction.java:18: error: : expected
                case "command" -> new CommandAction(params);
                              ^
D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\mechanics\provided\custom\CustomMechanicAction.java:18: error: illegal start of expression
                case "command" -> new CommandAction(params);
                               ^
100 errors
 
FAILURE: Build failed with an exception.
 
* What went wrong:
Execution failed for task ':compileJava'.
> Compilation failed; see the compiler error output for details.
 
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
 
* Get more help at https://help.gradle.org
 
BUILD FAILED in 1s
2 actionable tasks: 2 executed

字符串

hs1ihplo

hs1ihplo1#

这似乎是由于使用旧版本的Java来编译代码,而至少必须使用Java 16。使用足够新的Java版本应该可以解决这个问题。
编译器输出在一些较新的Java功能上失败:Java 16中添加的pattern matching instanceof operator和Java 14中添加的switch expressions

D:\compilar\Oraxen-master\src\main\java\io\th0rgal\oraxen\commands\CommandsManager.java:52: error: ')' expected
                    if (sender instanceof Player player) {
                                                ^

个字符
考虑到故障是由于较新的语言功能,这告诉我,问题可能是由于使用了较旧版本的Java(Java 13或更早版本)。
有两种方法可以解决这个问题。第一种(也是可移植性较低的)方法是确保构建在足够新的Java版本下运行。例如,在命令行下运行时,java --version应该在运行构建之前指示Java版本至少为16。如果版本太旧,则必须首先安装较新的版本。
第二种方法是指定要在Gradle构建中使用的Java版本。这将确保构建始终与正确的Java版本一起使用。对于较新版本的Gradle,可以将Java Toolchain配置为使用正确的版本:

java {
    toolchain {
        languageVersion = JavaLanguageVersion.of(16)
    }
}

相关问题