Проблема компиляции после декомпиляции.

Версия Minecraft
1.7.10
Здравствуйте, после декопиляции почистил в эклипсе код от ошибок, в итоге все чисто, но при компиляции вылетают ошибки на все подряд. Надеюсь найдутся добрые молодцы, что помогут!


Код:
package ru.test.tmod.blocks;

import java.util.List;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;


public interface IModBlock
{
    default boolean hasSubBlocks() {
        return false;
    }
   
    default boolean hasCustomItemNameByMeta() {
        return true;
    }
    
    default String[] getCustomItemIconNames() {
        return null;
    }
    
    default void addInformation(ItemStack itemStack, EntityPlayer entityPlayer, List<String> list) {
    }
}
Код:
C:\Users\iotachaos\Desktop\decomp2>gradlew.bat build
****************************
Powered By MCP:
http://modcoderpack.com/
Searge, ProfMobius, Fesh0r,
R4wk, ZeuX, IngisKahn, bspkrs
MCP Data version : unknown
****************************
:compileApiJava UP-TO-DATE
:processApiResources UP-TO-DATE
:apiClasses UP-TO-DATE
:sourceMainJava
:compileJava
warning: [options] bootstrap class path not set in conjunction with -source 1.6
C:\Users\iotachaos\Desktop\decomp2\build\sources\java\ru\test\tmod\blocks\IModBlock.java:10: error: illegal start of type
   default boolean hasSubBlocks() {
   ^
C:\Users\iotachaos\Desktop\decomp2\build\sources\java\ru\test\tmod\blocks\IModBlock.java:10: error: = expected
   default boolean hasSubBlocks() {
           ^
C:\Users\iotachaos\Desktop\decomp2\build\sources\java\ru\test\tmod\blocks\IModBlock.java:10: error: ';' expected
   default boolean hasSubBlocks() {
                  ^
C:\Users\iotachaos\Desktop\decomp2\build\sources\java\ru\test\tmod\blocks\IModBlock.java:10: error: illegal start of type
   default boolean hasSubBlocks() {
                               ^
C:\Users\iotachaos\Desktop\decomp2\build\sources\java\ru\test\tmod\blocks\IModBlock.java:10: error: <identifier> expected
   default boolean hasSubBlocks() {
                                ^
C:\Users\iotachaos\Desktop\decomp2\build\sources\java\ru\test\tmod\blocks\IModBlock.java:10: error: = expected
   default boolean hasSubBlocks() {
                                  ^
C:\Users\iotachaos\Desktop\decomp2\build\sources\java\ru\test\tmod\blocks\IModBlock.java:10: error: ';' expected
   default boolean hasSubBlocks() {
                                   ^
C:\Users\iotachaos\Desktop\decomp2\build\sources\java\ru\test\tmod\blocks\IModBlock.java:11: error: illegal start of type
       return false;
              ^
C:\Users\iotachaos\Desktop\decomp2\build\sources\java\ru\test\tmod\blocks\IModBlock.java:11: error: <identifier> expected
       return false;
                   ^
C:\Users\iotachaos\Desktop\decomp2\build\sources\java\ru\test\tmod\blocks\IModBlock.java:12: error: = expected
   }
   ^
C:\Users\iotachaos\Desktop\decomp2\build\sources\java\ru\test\tmod\blocks\IModBlock.java:12: error: ';' expected
   }
    ^
C:\Users\iotachaos\Desktop\decomp2\build\sources\java\ru\test\tmod\blocks\IModBlock.java:18: error: illegal start of type
   default String[] getCustomItemIconNames() {
   ^
C:\Users\iotachaos\Desktop\decomp2\build\sources\java\ru\test\tmod\blocks\IModBlock.java:18: error: = expected
   default String[] getCustomItemIconNames() {
           ^
C:\Users\iotachaos\Desktop\decomp2\build\sources\java\ru\test\tmod\blocks\IModBlock.java:18: error: ';' expected
   default String[] getCustomItemIconNames() {
                 ^
C:\Users\iotachaos\Desktop\decomp2\build\sources\java\ru\test\tmod\blocks\IModBlock.java:18: error: illegal start of type
   default String[] getCustomItemIconNames() {
                  ^
C:\Users\iotachaos\Desktop\decomp2\build\sources\java\ru\test\tmod\blocks\IModBlock.java:22: error: illegal start of type
   default void addInformation(ItemStack paramItemStack, EntityPlayer paramEntityPlayer, List<String> paramList) {}
   ^
C:\Users\iotachaos\Desktop\decomp2\build\sources\java\ru\test\tmod\blocks\IModBlock.java:22: error: = expected
   default void addInformation(ItemStack paramItemStack, EntityPlayer paramEntityPlayer, List<String> paramList) {}
           ^
C:\Users\iotachaos\Desktop\decomp2\build\sources\java\ru\test\tmod\blocks\IModBlock.java:22: error: ';' expected
   default void addInformation(ItemStack paramItemStack, EntityPlayer paramEntityPlayer, List<String> paramList) {}
               ^
C:\Users\iotachaos\Desktop\decomp2\build\sources\java\ru\test\tmod\blocks\IModBlock.java:22: error: illegal start of type
   default void addInformation(ItemStack paramItemStack, EntityPlayer paramEntityPlayer, List<String> paramList) {}
                              ^
C:\Users\iotachaos\Desktop\decomp2\build\sources\java\ru\test\tmod\blocks\IModBlock.java:22: error: = expected
   default void addInformation(ItemStack paramItemStack, EntityPlayer paramEntityPlayer, List<String> paramList) {}
                                         ^
C:\Users\iotachaos\Desktop\decomp2\build\sources\java\ru\test\tmod\blocks\IModBlock.java:22: error: illegal start of type
   default void addInformation(ItemStack paramItemStack, EntityPlayer paramEntityPlayer, List<String> paramList) {}
                                                       ^
C:\Users\iotachaos\Desktop\decomp2\build\sources\java\ru\test\tmod\blocks\IModBlock.java:22: error: = expected
   default void addInformation(ItemStack paramItemStack, EntityPlayer paramEntityPlayer, List<String> paramList) {}
                                                                      ^
C:\Users\iotachaos\Desktop\decomp2\build\sources\java\ru\test\tmod\blocks\IModBlock.java:22: error: illegal start of type
   default void addInformation(ItemStack paramItemStack, EntityPlayer paramEntityPlayer, List<String> paramList) {}
                                                                                       ^
C:\Users\iotachaos\Desktop\decomp2\build\sources\java\ru\test\tmod\blocks\IModBlock.java:22: error: = expected
   default void addInformation(ItemStack paramItemStack, EntityPlayer paramEntityPlayer, List<String> paramList) {}
                                                                                             ^
C:\Users\iotachaos\Desktop\decomp2\build\sources\java\ru\test\tmod\blocks\IModBlock.java:22: error: <identifier> expected
   default void addInformation(ItemStack paramItemStack, EntityPlayer paramEntityPlayer, List<String> paramList) {}
                                                                                                    ^
C:\Users\iotachaos\Desktop\decomp2\build\sources\java\ru\test\tmod\blocks\IModBlock.java:22: error: ';' expected
   default void addInformation(ItemStack paramItemStack, EntityPlayer paramEntityPlayer, List<String> paramList) {}
                                                                                                     ^
C:\Users\iotachaos\Desktop\decomp2\build\sources\java\ru\test\tmod\blocks\IModBlock.java:22: error: illegal start of type
   default void addInformation(ItemStack paramItemStack, EntityPlayer paramEntityPlayer, List<String> paramList) {}
                                                                                                               ^
C:\Users\iotachaos\Desktop\decomp2\build\sources\java\ru\test\tmod\blocks\IModBlock.java:22: error: <identifier> expected
   default void addInformation(ItemStack paramItemStack, EntityPlayer paramEntityPlayer, List<String> paramList) {}
                                                                                                                ^
C:\Users\iotachaos\Desktop\decomp2\build\sources\java\ru\test\tmod\blocks\IModBlock.java:22: error: = expected
   default void addInformation(ItemStack paramItemStack, EntityPlayer paramEntityPlayer, List<String> paramList) {}
                                                                                                                  ^
C:\Users\iotachaos\Desktop\decomp2\build\sources\java\ru\test\tmod\blocks\IModBlock.java:22: error: ';' expected
   default void addInformation(ItemStack paramItemStack, EntityPlayer paramEntityPlayer, List<String> paramList) {}
                                                                                                                   ^
C:\Users\iotachaos\Desktop\decomp2\build\sources\java\ru\test\tmod\blocks\IModBlock.java:23: error: reached end of file while parsing
}
^
31 errors
1 warning
:compileJava FAILED

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.

BUILD FAILED

Total time: 17.717 secs
 
Решение
Потому что у тебя компиляция на jre 1.6, а default появился в Java8 (jre 1.8)


В build файл всунь
sourceCompatibility = targetCompatibility = 1.8
И не забудь старые удалить


А если тупо удалишь default реализацию методов интерфейса, то компилятор будет ругаться на то, что у тебя эти методы не реализованы в других классах.
2,505
81
397
Потому что у тебя компиляция на jre 1.6, а default появился в Java8 (jre 1.8)


В build файл всунь
sourceCompatibility = targetCompatibility = 1.8
И не забудь старые удалить


А если тупо удалишь default реализацию методов интерфейса, то компилятор будет ругаться на то, что у тебя эти методы не реализованы в других классах.
 
Спасибо, но это привело к ошибкам в других классах, даже эклипс ругается
Код:
C:\Users\iotachaos\Desktop\decomp2>gradlew.bat build
****************************
 Powered By MCP:
 http://modcoderpack.com/
 Searge, ProfMobius, Fesh0r,
 R4wk, ZeuX, IngisKahn, bspkrs
 MCP Data version : unknown
****************************
:compileApiJava UP-TO-DATE
:processApiResources UP-TO-DATE
:apiClasses UP-TO-DATE
:sourceMainJava UP-TO-DATE
:compileJava
warning: [options] bootstrap class path not set in conjunction with -source 1.6
C:\Users\iotachaos\Desktop\decomp2\build\sources\java\ru\test\tmod\blocks\BlockVendingMachine.java:21: error: BlockVendingMachine is not abstract and does not override abstract method getCustomItemIconNames() in IModBlock
/*     */ public class BlockVendingMachine
                 ^
C:\Users\iotachaos\Desktop\decomp2\build\sources\java\ru\test\tmod\blocks\BlockRedServer.java:9: error: BlockRedServer is not abstract and does not override abstract method getCustomItemIconNames() in IModBlock
/*    */ public class BlockRedServer extends AbstractModBlock implements IModBlock
                ^
C:\Users\iotachaos\Desktop\decomp2\build\sources\java\ru\test\tmod\blocks\BlockRedServer.java:27: error: abstract method addInformation(ItemStack,EntityPlayer,List<String>) in IModBlock cannot be accessed directly
/* 27 */     super.addInformation(paramItemStack, paramEntityPlayer, paramList);
                  ^
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
3 errors
1 warning
:compileJava FAILED

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.

BUILD FAILED

Total time: 16.686 secs

Если требуется могу скинуть код самих классов.


Dahaka написал(а):
Потому что у тебя компиляция на jre 1.6, а default появился в Java8 (jre 1.8)


В build файл всунь
sourceCompatibility = targetCompatibility = 1.8
И не забудь старые удалить


А если тупо удалишь default реализацию методов интерфейса, то компилятор будет ругаться на то, что у тебя эти методы не реализованы в других классах.




Вот, я тоже удивлялся ошибке jre 1.6, но простите я не понял как настроить, куда конкретно вставить и что удалить?
 
2,505
81
397
build.gradle
В этот файл (примерно так называется). Находится в корневой директории проекта. Найди там подобные строчки, где написано 1.6 и замени на 1.8. После этого неплохо было бы все пересобрать, чтобы в твоей IDE (eclipse) настройки сами сменились.
 
Там нет ничего подобного, каждый файл обыскал


Код:
buildscript {
    repositories {
        mavenCentral()
        maven {
            name = "forge"
            url = "http://files.minecraftforge.net/maven"
        }
        maven {
            name = "sonatype"
            url = "https://oss.sonatype.org/content/repositories/snapshots/"
        }
    }
    dependencies {
        classpath 'net.minecraftforge.gradle:ForgeGradle:1.2-SNAPSHOT'
    }
}

apply plugin: 'forge'

version = "2.3"
group= "tmod" // http://maven.apache.org/guides/mini/guide-naming-conventions.html
archivesBaseName = "TMod"

minecraft {
    version = "1.7.10-10.13.4.1614-1.7.10"
    runDir = "eclipse"
}

dependencies {
    // you may put jars on which you depend on in ./libs
    // or you may define them like so..
    //compile "some.group:artifact:version:classifier"
    //compile "some.group:artifact:version"
      
    // real examples
    //compile 'com.mod-buildcraft:buildcraft:6.0.8:dev'  // adds buildcraft to the dev env
    //compile 'com.googlecode.efficient-java-matrix-library:ejml:0.24' // adds ejml to the dev env

    // for more info...
    // http://www.gradle.org/docs/current/userguide/artifact_dependencies_tutorial.html
    // http://www.gradle.org/docs/current/userguide/dependency_management.html

}

processResources
{
    // this will ensure that this task is redone when the versions change.
    inputs.property "version", project.version
    inputs.property "mcversion", project.minecraft.version

    // replace stuff in mcmod.info, nothing else
    from(sourceSets.main.resources.srcDirs) {
        include 'mcmod.info'
                
        // replace version and mcversion
        expand 'version':project.version, 'mcversion':project.minecraft.version
    }
        
    // copy everything else, thats not the mcmod.info
    from(sourceSets.main.resources.srcDirs) {
        exclude 'mcmod.info'
    }
}


Изменил Java_Home на 1.8 (А то он на 1.7 был) и пошел смотреть примеры того, что вы сказали на гитхабе.
Спасибо, в итоге просто вставил строки вашего кода(удалять ничего не нужно).
 

Icosider

Kotliner
Администратор
3,603
99
664
Dahaka написал(а):
Причем тут метод декомпиляции? Просто целевой мод был написан на Java8, а проект у ТС ее не поддерживал.
Ну когда я смотрел код мода под 8 жабу там дефолта не было. А вот в одном из декомпиляторов, дефолт ставился автоматом.
 
2,505
81
397
WildHeart написал(а):
Ну когда я смотрел код мода под 8 жабу там дефолта не было. А вот в одном из декомпиляторов, дефолт ставился автоматом.
Написал бред сумасшедшего. Если мод написан с поддержкой java8, то это не значит, что он должен использовать её фичи.

default позволяет реализовать метод интерфейса. Это одна из новых фич java8. Странно, что ты до сих пор не загуглил...
 

Icosider

Kotliner
Администратор
3,603
99
664
Dahaka написал(а):
WildHeart написал(а):
Ну когда я смотрел код мода под 8 жабу там дефолта не было. А вот в одном из декомпиляторов, дефолт ставился автоматом.
Написал бред сумасшедшего. Если мод написан с поддержкой java8, то это не значит, что он должен использовать её фичи.

default позволяет реализовать метод интерфейса. Это одна из новых фич java8. Странно, что ты до сих пор не загуглил...
Сообщение до конца дочитай. Я не отвергаю того, что моду не обязательно использовать фичи 8, странно что некоторые декомпиляторы навязывают использовать их. По поводу дефолта, мне не зачем гуглить то, что я знаю.
 
Сверху