Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

[SOLVED] Compilation error only when "gradle build"


Blackout
 Share

Recommended Posts

Hello,

 

I have some issues with generics.

In eclipse (using JRE 7 with compilance setting set to 1.6), I have no error, my game launches well.

But when I try to make a release using "gradle build" command, I get a compilation error about generics.

 

\build\sources\main\java\fr\eyzox\dependencygraph\DependencyGraph.java:31: error: method buildIndex in class DataKeyProvider<K> cannot be applied to given types;
                        node.keyProvider.buildIndex(index, node);
                                        ^
  required: Map<KEY,DependencyGraph<KEY,? extends IData<KEY>>.Node>,DependencyGraph<KEY,? extends IData<KEY>>.Node
  found: Map<KEY,DependencyGraph<KEY,DATA>.Node>,DependencyGraph<KEY,DATA>.Node
  reason: actual argument Map<KEY,DependencyGraph<KEY,DATA>.Node> cannot be converted to Map<KEY,DependencyGraph<KEY,? extends IData<KEY>>.Node> by method invocation conversion
  where KEY,DATA,K are type-variables:
    KEY extends Object declared in class DependencyGraph
    DATA extends IData<KEY> declared in class DependencyGraph
    K extends Object declared in class DataKeyProvider

 

I don't know why it works in Eclipse but doesn't when build.

I've edit gradle.build to use Java 7 to compile with theses line :

sourceCompatibility = 1.7
targetCompatibility = 1.7

 

Source code is available here : https://github.com/RedRelay/FCH_DEBUG

 

Maybe it is pur java's generics missunderstanding, but I doubt it because all works fine in Eclipse.

 

Edit : This is for 1.9 atm so I use the recommended version of forge for MC 1.9 (1.9-12.16.1.1887)

Link to comment
Share on other sites

It is broken in that

[*]it has no

.gitignore

[*]it is missing the gradle wrapper

[*]your build.gradle defines no java source directories and you are not using the default one, hence as far as the gradle project is concerned your source code does not exist

1 and 2 I can deal with but 3 makes it impossible to even run your code. And I am not fixing your build.gradle for you.

Link to comment
Share on other sites

Oh ok my bad ^^

I use default build.gradle

The build.gradle in the repository is useless, I only use it to copy/paste when I update forge because I'm too lazy to edit version, group and archiveBaseName each time ^^ I should have remove it from git for a while ^^

 

All is default Forge 1.9-12.16.1.1887 configuration, and my .git is located in /src

 

I've gradle 2.7 installed on my computer so I don't need wrapper right ?

However, I copy/paste all file in mdk zip except gradlew.bat and gradlew.sh

Link to comment
Share on other sites

I've always push only sources to git repo.

All other root files are set to default value.

 

I'll put the root directory on github after releasing if it's a better practice.

 

EDIT : I've done it for my others mods repo, I just wait releasing to rework this repo

Link to comment
Share on other sites

I didn't know that Eclipse using its own compiler :o

I've worked on my java's generics understanding, and I've fixed the issue using

protected abstract <D extends IData<K>> void buildIndex(final Map<K, DependencyGraph<K, D>.Node> index, final DependencyGraph<K, D>.Node theNode) throws DuplicateKeyException;

instead of

protected abstract void buildIndex(final Map<K, DependencyGraph<K, ? extends IData<K>>.Node> index, final DependencyGraph<K, ? extends IData<K>>.Node theNode) throws DuplicateKeyException;

 

Thanks a lot :)

Link to comment
Share on other sites

Of course Eclipse has its own compiler. How did you think the run button worked?

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Link to comment
Share on other sites

Of course Eclipse has its own compiler. How did you think the run button worked?

Uhm, what? IntelliJ uses Javac and they have a run button as well? Eclipse only has it's own compiler because they use the compiler for most of the IDE magic (auto-complete, etc.). IntelliJ has it's own stuff for that and uses javac just for compiling.

Unless you are being sarcastic here?

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



×
×
  • Create New...

Important Information

By using this site, you agree to our Privacy Policy.