#Generated annotation using gradlew + dagger - java

I'm confronting a weird issue using gradlew(4.10.2) + dagger(2.18).
The problem is when I call:
./gradlew :app:compileDebugAndroidTestKotlin
The build fails with:
Task :Common:compileDebugJavaWithJavac FAILED
/CommonModule_ProvidesGsonFactory.java:6: error: package javax.annotation.processing does not exist
import javax.annotation.processing.Generated;
/CommonModule_ProvidesGsonFactory.java:8: error: cannot find symbol
#Generated(
But if I run the task from Android Studio, the task succeed and the #Generated is not present in the dagger generated class.
Do you have some clue to avoid the #Generated annotation using ./gradlew?

if you have :
javax annotation does not exist
I have this issue on my macOS
this error occures because your jdk is above of 1.8
just add below code on build.gradle of your apps .
//Resolve jdk8+ Generation Annotations - javax annotation does not exist
compileOnly 'com.github.pengrad:jdk9-deps:1.0'

Dagger uses auto-common's GeneratedAnnotations to figure out which #Generated annotation to use. It does this based on the classpath.
What this means is that while the annotation processor is running, javax.annotation.processing.Generated is available and used in the generator, but when the resulting file is compile in another task, it is no longer on the classpath.
Potential causes could be that code was generated using a newer version of the JDK and the incremental build is invalid, requiring a full "clean & rebuild" or there is a problem with java language levels where the annotation processor runs on Java 9+, but android is compiled as Java 8 or lower.
Using ./gradlew compileDebugAndroidTestKotlin -Dorg.gradle.java.home=<Android studio jre path> solved the problem.

I had this problem when I updated my Android Studio to 4.2
The problem was solved when I upgrade the Kotlin version from 1.3.51 to 1.4.31
It seems the problem is reported and solved in this issue:
https://github.com/google/dagger/issues/1449
https://youtrack.jetbrains.com/issue/KT-32804

change to embeded Android studio version and only clean!(not rebuild) Improove #kiskae answer

I also got "package javax.annotation.processing does not exist import javax.annotation.processing.Generated" in Android Studio while trying to build the project with Gradle.
Due to some reasons I cannot upgrade any dependencies in the project. What worked for me in this case:
not only install Java 8 instead of any higher Java versions you have (you can download it from here, for example: https://www.oracle.com/ru/java/technologies/javase/javase-jdk8-downloads.html),
but also check out Project Structure -> SDK location -> JDK location and make sure that this folder really contains jdk. The right option to choose can start with JAVA_HOME, for instance.
My case was that after some update this location was set by default as embedded JDK which did not contain any jdk and as a quite newbie to Android I have spent a couple of beautiful hours trying to figure out what's wrong with my Java 8.

In my case I change "Gradle JDK" and it's work perfectly.
Go to "File ==> project structure ==> SDK Location ==> Gradle settings ==> then change the selected gradle JDK from the drop down menu "
Hope this will help you.

Related

The Android Gradle plugin supports only kotlin-android-extensions Gradle plugin version 1.6.20 and higher

I am trying tog get my React Native app (with expo modules, but not built on expo) deployed to the Google Play Store, and I keep getting this error when I try to build...
The Android Gradle plugin supports only kotlin-android-extensions Gradle plugin version 1.6.20 and higher.
The following dependencies do not satisfy the required version:
project ':expo' -> org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.10
My issue us, the line that it seems to be referencing, project ':expo' -> org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.10 doesn't exist anywhere in my code, maybe in the node modules but I have no way of knowing.
I have absolutely no idea what kotlin is and never heard of it before this. I tried looking around for where to upgrade by kotlin-gradle-plugin, but thats nowhere in my app.json or package.json or any other config files. I saw some message boards with similar issues telling me to change this line inside of build.gradle
classpath('com.android.tools.build:gradle:7.3.0')
to make 7.3.0 match the version I need, but I firmly believe 7.3.0 is greater than 1.6.20, so I highly doubt that solution has any actual merits
Apparently, the current version of expo-modules are incompatible with the latest version of React Native (0.70.0) and how it compiles Android Builds. I downgraded react-native to 0.69.5. This ultimately led me to other issues but hopefully this can help somebody else.

Gradle: keyword `cvs` not allowed in java package name

I tried to create an Android project with package com.cvs.app and Gradle is crashing during the build. If I remove cvs from the package - works fine.
Note: cvs in the package works fine with Gradle version 3.2 and lower.
Is there a list of prohibited keywords in Gradle?
Can I overcome this limitation somehow?
As #Martheen mentioned in comments - this is a knows issue in Gradle - github.com/gradle/gradle/issues/5321
Seems to be resolved in 4.0.10

Upgrading Gradle

I am fully aware that there are pages on the Gradle website that say how to upgrade, but only from 4.x and up.
I am trying to follow a tutorial in making a simple 'my first' Minecraft mod. In it, you are told to install forge 1.7.10, which, from what I understand runs on Gradle 2.0.
In order for me to continue with the tutorial, after some digging, it appears that Gradle 2.0 is not compatible with JDK 12.0.2, but I'm not entirely sure how to solve this.
any help is much 'preciated.
extending the answer from Chriki, you can change the gradle version in $projectroot/gradle/wrapper/gradle-wrapper.properties
here you can change the path to point to already downloaded gradle-bin,
something like this (distributionUrl=../../../build/tools/gradle-4.10.3-bin.zip)
or directly to gradle repository
(e.g. distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.3-bin.zip)
I’m afraid, you have a chicken and egg problem here: your JDK 12 requires a recent Gradle version (at least 5.4, if I’m not mistaken). At the same time, the forge plugin that is used in your build doesn’t support Gradle 5, yet.
Maybe you can install and use JDK 11 instead? In that case you could work with Gradle 4 with which the forge plugin also seems to work. With my JDK 11 installation I could get the build to work as follows:
sed -i 's/gradle-2.0/gradle-4.10.3/' gradle/wrapper/gradle-wrapper.properties
This changes the Gradle wrapper version to 4.10.3 in gradle/wrapper/gradle-wrapper.properties (can also be done manually with a text editor). When I now run
./gradlew project
the build seems to generally work fine. It only complains: “You must set the Minecraft Version!” That’s a different matter, though.
For anyone here from Google, Minecraft Forge versions below 1.12 DO NOT SUPPORT any java version besides JDK8. You need to install JDK8.
The maximum version you can update your Gradle to is therefore 4.8.1, as any versions above that require JDK9.

JavaFX on Android - Gradle can't find JDK

I'm trying to get JavaFX applications to run on Android by using the Dalvik JavaFX-Android SDK (provided by the JavaFX Android porting team). So I downloaded the samples provided by the JavaFX Android porting team and have been trying to run one of them on Android without much success.
Using Eclipse with the Gradle plugin I imported the "HelloWorldFxml" sample project. Then I ran the Gradle task "./gradlew androidInstall" on the project like the README file told me. But unfortunately the task cannot execute because Gradle cannot locate my JDK:
(source: forumbilder.se)
Even though my JAVA_HOME system variable is correctly set and I havn't had a problem with it before:
(source: forumbilder.se)
Anyone that can provide some insight as to how I can fix this?
Versions: Eclipse Luna Service Release 1a (4.4.1), Gradle 2.2, dalvik-sdk-8u40-ea3, Android SDK Build-tools 21.1.2, Android SDK Tools 24.0.2
Edit: The console output when running "gradlew androidinstall" on a sample project:
Even though the error message doesn't specify it, maybe it's looking for javac in your PATH? In case it's not in there try adding ;%JAVA_HOME%\bin to the end of your PATH variable (and restart Eclipse afterwards, I've had the problem of running processes not getting changes to environment variables before).
Check the Java setting in Eclipse:
Window -> Preferences
Java -> Installed JREs
Make sure that your JDK 1.8 is listed there. If it's not, add it using the Add... button.
Once the JDK is known to Eclipse, make sure that your project's settings use that JDK as a compiler, and the Gradle plugin should be able to pick up the setting from there.
In a pinch, you should also be able to run Gradle from the command line, and it should work fine since you already set the %JAVA_HOME% variable.
Basic Note
Since the release of dalvik-sdk-8u40-ea3, and in very short time, the JavaFXPorts team has released a few new versions, all of them simplifying all the process of porting a JavaFX application to Android or iOS.
They released dalvik-sdk-8u40-ea4 and they announced the release of a new plugin, that will simplify to the minimum the steps to create a mobile application from JavaFX.
While this answer may not help the OP in his particular problem, definitely it will help him and others, since everything is really simplified.
New approach
With this plugin, there's a new way of creating the HelloWorldFxml application for Android.
The new javafxmobile-plugin allows you to generate the apk with a single 'build.gradle' file.
You can find this an other basic samples here, and download the repository here.
You won't need to edit a single line, just type this on the command line, on the root of the sample, with your device connected:
gradlew androidInstall
As for previous releases, you will need JDK8u40 and Android SDK installed. No need for dalvik-sdk though, it's retrieved by the plugin.
Notice that you can open these samples from your IDE, so you will be able to modify them, and run them locally or build again the apk for your device.
Had this problem, too.
My proberties:
-Windows 7
-Dalvik SDK (dalvik-sdk-8u60-b5)
-JDK 8 (newest Version 8_60 / IMPORTANT: JDK not JRE)
-And I tried also the HelloAndroid project provided by the Dalvik-SDK-download.
So i execute the command line: gradlew installDebug
My probelm was nearly the same.
"Fail to find JDK. Please make sure there is a JAVA_HOME or JAVA8_HOME systemvariable."
#1
Created these proberties. Just like described in this post:
How to set java_home on Windows 7?
So to make everything sure, I created both with the same path. Cause I don't know exactly which one is used by gradle.
#2
This is really the hack that helps me out. Found this also in StackOverflow.
Write in your build.gradle under the android{..} stuff this line:
retrolambda {
jdk 'C:/Program Files/Java/jdk1.8.0_60' //<--your JDK-path
}
it looks like that
Then execute the same command line again and it worked for me.
I think only the 2. steps was the solution, cause I guess gradle don't look for the variable if there is a direct path to the jdk.

No source code is available for type java.util.Objects

I've run into a pretty weird problem.
I checked out a repo from github in eclipse. It's a gwt project. When I try to compile the project, I got an error:
No source code is available for type java.util.Objects.
There are also some similar errors which all point to the same problem: I use the wrong Java version.
What is weird here is that I do use Java 7 in my project.
I can not post an image here but I do use java7. I added a test class which contains some features in java7, like switch(String), it works fine when I run it as a Java application.
Got a clue? Need help!
Answer: Thanks to sᴜʀᴇsʜ ᴀᴛᴛᴀ, I got it right. I used gwt-2.5.1. Change it to 2.6, it works! Thank you guys.
That's because Eclipse couldn't find the java library.
Please check the project settings and source tab. and make sure that the java sdk was included.
If are you using GWT 2.6 , then below 2.6 versions of GWT doesn't support java7.
Java7 support added in GWT 2.6 version.
Make sure that the GWT version and Java version matching or not.
Just because you have java 7, doesn't mean you have the source for it.
Java code running in GWT is translated to Javascript, so some classes that work on a JVM won't work with GWT
Check the JRE system library in project build path.
Right click on project -> Build Path -> Libraries
Also check for the java compiler compliance level
Right on project -> Properties -> Java Compiler

Categories

Resources