Cannot find symbol variable DaggerAppComponent in IntelliJ - java

I cloned this project https://github.com/robohorse/RoboPOJOGenerator and trying to build with the help of IntelliJ IDE.
It is imported succesfully and downloaded necessary dependencies but it fails when I rebuild it.
Error:(10, 24) java: cannot find symbol
symbol: variable DaggerAppComponent
location: class com.robohorse.robopojogenerator.injections.Injector
I have tried many threads of stackoverflow but didn't work for me. Is this something with gradle or dagger.
buildscript {
repositories {
mavenCentral()
maven { url "http://dl.bintray.com/jetbrains/intellij-plugin-service" }
maven { url "https://plugins.gradle.org/m2/" }
maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
}
dependencies {
classpath "net.ltgt.gradle:gradle-apt-plugin:0.9"
classpath "org.jetbrains.intellij.plugins:gradle-intellij-plugin:0.2.0-SNAPSHOT"
classpath 'org.kt3k.gradle.plugin:coveralls-gradle-plugin:2.8.1'
}
}
apply plugin: "java"
apply plugin: "idea"
apply plugin: "org.jetbrains.intellij"
apply plugin: "net.ltgt.apt"
apply plugin: "jacoco"
apply plugin: 'com.github.kt3k.coveralls'
compileJava {
sourceCompatibility = 1.8
targetCompatibility = 1.8
}
jacocoTestReport {
reports {
xml.enabled = true
html.enabled = true
}
}
coveralls {
jacocoReportPath = "${buildDir}/reports/jacoco/test/jacocoTestReport.xml"
}
repositories {
mavenCentral()
}
group "com.robohorse.robopojogenerator"
version "1.8.3"
intellij {
pluginName "RoboPOJOGenerator"
intellij.updateSinceUntilBuild false
//intellij.localPath = "/Applications/IntelliJ IDEA CE.app/Contents"
}
ext.daggerVersion = '2.7'
dependencies {
testCompile "junit:junit:4.12"
testCompile 'org.mockito:mockito-core:2.0.86-beta'
compile "com.intellij:annotations:+#jar"
compile 'org.json:json:20160212'
compile 'commons-io:commons-io:2.4'
compile 'com.google.guava:guava:19.0'
compile "com.google.dagger:dagger:$daggerVersion"
apt "com.google.dagger:dagger-compiler:$daggerVersion"
compile "javax.annotation:jsr250-api:1.0"
compile 'com.fifesoft:rsyntaxtextarea:2.6.0'
}

**#Singleton**
#Component(modules = AppModule.class)
public interface AppComponent {
...
}
Make sure you have #Singleton annotated for your component.

Related

Getting an error "cannot find symbol" while trying to compile a Kotlin and Java mixed project with Gradle

I'm working on a Java-Kotlin mixed project (not using android).
When I try to compile project, I get "cannot find symbol" error wherever I refer to Kotlin class from Java class.
I followed instructions in the Kotlin documention and also tried solutions in other questions, but it doesn't work.
I've put all Java files in src/main/java, and all Kotlin files in src/main/kotlin.
Below is build.gradle I'm using.
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"
classpath "com.github.jengelman.gradle.plugins:shadow:$shadowVersion"
}
}
plugins {
id 'java'
}
if (!project.getPlugins().hasPlugin('org.jetbrains.kotlin.jvm')) {
apply plugin: 'org.jetbrains.kotlin.jvm'
}
if (!project.getPlugins().hasPlugin('com.github.johnrengelman.shadow')) {
apply plugin: 'com.github.johnrengelman.shadow'
}
def properties = new Properties()
new File(project.projectDir, '../../gradle.properties').withInputStream() { properties.load(it) }
group = properties.getProperty('group')
version = properties.getProperty('version')
sourceCompatibility = properties.getProperty('sourceCompatibility')
compileJava.options.encoding = 'UTF-8'
sourceSets {
main.kotlin.srcDirs += 'src/main/kotlin'
main.java.srcDirs += 'src/main/java'
}
tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
kotlinOptions {
freeCompilerArgs = ['-Xjvm-default=compatibility']
jvmTarget = '1.8'
}
}
jar {
finalizedBy shadowJar
}
repositories {
jcenter()
mavenCentral()
}
dependencies {
compile project(':Compatibility')
compile 'org.jetbrains.kotlin:kotlin-stdlib-jdk8:' + properties.getProperty('kotlinVersion')
compile 'com.google.guava:guava:' + properties.getProperty('guavaVersion')
compile 'com.google.code.gson:gson:' + properties.getProperty('gsonVersion')
compileOnly 'org.jetbrains:annotations:' + properties.getProperty('annotationsVersion')
}
gradle.properties:
group=foo.bar
version=1.0.0
sourceCompatibility=1.8
kotlinVersion=1.4.10
guavaVersion=29.0-jre
gsonVersion=2.8.6
annotationsVersion=20.0.0
Problematic code
Kotlin code
enum class TaskType {
INFINITE, NORMAL, REVERSE
}
Error message (From Java source)
error: cannot find symbol
super(TaskType.REVERSE);
^
How can I solve this problem?

Adding dependency causes main class to not be found

When adding the com.spotify:docker-client:3.5.12 dependency to build.gradle, it causes my main class "com.gamedash.daemon.Main" to not be found. I have absolutely no clue what this might be causing. Removing the dependency resolves the issue.
build.gradle
group 'com.gamedash.daemon'
version '0.1'
apply plugin: 'java'
apply plugin: 'application'
apply plugin: 'eclipse'
apply plugin: 'idea'
sourceCompatibility = 9
targetCompatibility = 9
repositories {
mavenCentral()
maven {
url 'https://jetbrains.bintray.com/pty4j'
}
}
application {
mainClassName = 'com.gamedash.daemon.Main'
}
jar {
manifest {
attributes(
'Main-Class': 'com.gamedash.daemon.Main'
)
}
from {
configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
}
}
sourceSets {
main {
resources {
srcDirs "src/main/resources", "src/main/configs"
}
}
}
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'net.sf.proguard:proguard-gradle:6.2.2'
}
}
dependencies {
implementation('me.tongfei:progressbar:0.7.4')
implementation('com.google.guava:guava:28.2-jre')
implementation('com.corundumstudio.socketio:netty-socketio:1.7.17')
implementation('org.jetbrains.pty4j:pty4j:0.8.6')
implementation('commons-io:commons-io:2.6')
implementation('org.zeroturnaround:zt-zip:1.13')
implementation('org.apache.httpcomponents:httpclient:4.5.8')
implementation('com.beust:jcommander:1.78')
implementation('com.google.code.gson:gson:2.8.5')
implementation('com.github.oshi:oshi-core:4.4.2')
implementation('net.java.dev.jna:jna:5.3.1')
implementation('net.java.dev.jna:jna-platform:5.3.1')
implementation('org.apache.commons:commons-lang3:3.9')
implementation('com.sparkjava:spark-core:2.9.1')
implementation('org.slf4j:slf4j-api:1.7.6')
implementation('org.slf4j:slf4j-log4j12:1.7.5')
implementation('org.apache.mina:mina-core:2.0.0-M2')
implementation('org.apache.ftpserver:ftplet-api:1.1.1')
implementation('org.apache.ftpserver:ftpserver-core:1.1.1')
implementation('org.apache.sshd:sshd-core:2.4.0')
implementation('org.apache.sshd:sshd-sftp:2.4.0')
compile('com.spotify:docker-client:3.5.12:shaded')
implementation('org.beryx:text-io:3.3.0')
implementation('com.fasterxml.jackson.core:jackson-core:2.9.8')
implementation('com.fasterxml.jackson.core:jackson-annotations:2.9.8')
implementation('com.fasterxml.jackson.core:jackson-databind:2.9.8')
compile group: 'javax.xml.bind', name: 'jaxb-api', version: '2.2.4'
implementation group: 'commons-validator', name: 'commons-validator', version: '1.4.0'
implementation files('lib/icmp4j-all.jar')
implementation files('lib/Schokker-IT-Rest-Client.jar')
implementation files('lib/com.gamedash.daemon.common.jar')
}
task obfuscate(type: proguard.gradle.ProGuardTask) {
configuration 'proguard.txt'
injars "build/libs/gamedash-daemon-${ version }.jar"
outjars "build/libs/gamedash-daemon-${ version }-obfuscated.jar"
}
Turns out that the library in question uses Bouncycastle and thus requires a signed jar to run. Would have been much more pleasant if the error message would have said so, instead of telling me that the class was not found.
Fixed it by adding the following rule to my build.gradle
exclude 'META-INF/*.RSA', 'META-INF/*.SF','META-INF/*.DSA'

Test package does not read Kotlin classes defined in main package

I cannot seem to access main classes within the test package in my Kotlin module within an Android Studio project. Please note that all code shown below is within a Kotlin JVM module that is imported into the Android app.
Here's my src/main/java code:
import com.google.gson.annotations.SerializedName
data class Customer(val password1: String,
val password2: String,
#SerializedName("last_name") val lastName: String,
#SerializedName("first_name") val firstName: String,
val email: String)
My test code in src/test/java:
class CreateUser {
#Test
fun createRandomUser() {
val random = Random()
val randomNumber = random.nextInt(10000000)
val customer = Customer("password", "password", "lastName", "firstName", "ted$randomNumber#gmail.com")
}
}
My build.gradle code looks like the following:
buildscript {
ext.kotlin_version = '1.1.4-3'
repositories {
mavenCentral()
jcenter()
}
dependencies {
classpath 'me.tatarka:gradle-retrolambda:3.7.0'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
apply plugin: 'java'
apply plugin: 'maven'
apply plugin: 'me.tatarka.retrolambda'
apply plugin: 'kotlin'
repositories {
mavenCentral()
jcenter()
}
dependencies {
// some other compile dependencies
compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
testCompile "org.hamcrest:hamcrest-all:1.3"
testCompile 'junit:junit:4.11'
testCompile 'org.mockito:mockito-all:1.9.5'
testCompile "org.jetbrains.kotlin:kotlin-test"
testCompile "org.jetbrains.kotlin:kotlin-test-junit"
}
task javadocJar(type: Jar) {
classifier = 'javadoc'
from javadoc
}
task sourcesJar(type: Jar) {
classifier = 'sources'
from sourceSets.main.allSource
}
artifacts {
archives sourcesJar
archives javadocJar
}
compileKotlin {
kotlinOptions {
jvmTarget = "1.6"
}
}
compileTestKotlin {
kotlinOptions {
jvmTarget = "1.6"
}
}
The root build.gradle file looks as follows:
// Top-level build file where you can add configuration options
common to all sub-projects/modules.
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.3'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
maven {
url "https://jitpack.io"
credentials { username authToken }
}
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
ext {
versionName = "0.1.1"
rxJavaVersion = "2.1.3"
okHttpVersion = "3.9.0"
retrofitVersion = "2.3.0"
rxJava2AdapterVersion = "1.0.0"
googleGsonVersion = "2.8.0"
}
The error I get is that gradle cannot resolve Customer (Unresolved reference: Customer) in the Test class. It doesn't seem to include main classes into the test source directory. Yet, it resolves in the IDE.
Ok, I have found the solution. It seems I have to specify the src folders explicitly in my build.gradle and put all Kotlin code in src/main/kotlin and src/test/kotlin respectively.
sourceSets {
main.kotlin.srcDirs = ['src/main/kotlin', 'src/main/java']
main.java.srcDirs = []
test.kotlin.srcDirs = ['src/test/kotlin', 'src/test/java']
test.java.srcDirs = ['src/test/kotlin', 'src/test/java']
}
Once I did that, the tests started to work as expected - reports are even generated on Jenkins which is great.

How to package dependencies in a Grails 3 plugin using gradle?

I'm having difficulty generating a Grails 3.2.7 plugin with its dependencies.
This works and creates a JAR with all dependencies:
gradle clean build
..but not this; the JAR has no dependencies, just plugin project files:
gradle publishToMavenLocal
My gradle file, I know there's something missing, and based on the docs it's my understand there's no native feature to do this.
buildscript {
ext {
grailsVersion = project.grailsVersion
}
repositories {
mavenLocal()
maven { url "https://repo.grails.org/grails/core" }
jcenter()
}
dependencies {
classpath "org.grails:grails-gradle-plugin:$grailsVersion"
classpath "org.jfrog.buildinfo:build-info-extractor-gradle:3.0.1"
}
}
plugins {
id "io.spring.dependency-management" version "0.5.2.RELEASE"
id "com.jfrog.bintray" version "1.2"
}
version "3.1-SNAPSHOT"
group "mygroup"
apply plugin: 'eclipse'
apply plugin: 'idea'
apply plugin: "org.springframework.boot"
apply plugin: "com.jfrog.artifactory"
apply plugin: "org.grails.grails-plugin"
apply plugin: "org.grails.grails-gsp"
apply plugin: 'maven-publish'
ext {
grailsVersion = project.grailsVersion
gradleWrapperVersion = project.gradleWrapperVersion
}
sourceCompatibility = 1.8
targetCompatibility = 1.8
idea {
module {
downloadSources = true
}
}
repositories {
mavenLocal()
mavenCentral()
maven { url "https://repo.grails.org/grails/core" }
}
dependencyManagement {
imports {
mavenBom "org.grails:grails-bom:$grailsVersion"
}
applyMavenExclusions false
}
dependencies {
provided 'org.springframework.boot:spring-boot-starter-logging'
provided "org.springframework.boot:spring-boot-starter-actuator"
provided "org.springframework.boot:spring-boot-autoconfigure"
provided "org.springframework.boot:spring-boot-starter-tomcat"
provided "org.grails:grails-web-boot"
provided "org.grails:grails-dependencies"
provided 'javax.servlet:javax.servlet-api:3.1.0'
compile "org.grails:grails-plugin-testing"
testCompile "com.fiftyonred:mock-jedis:0.4.0"
console "org.grails:grails-console"
compile "redis.clients:jedis:2.5.2"
}
task wrapper(type: Wrapper) {
gradleVersion = gradleWrapperVersion
}
artifactory {
contextUrl = 'http://myrepo/'
}
task sourceJar(type: Jar) {
from sourceSets.main.allJava
}
publishing {
publications {
mavenJava(MavenPublication) {
from components.java
}
}
}
The issue stems from the publishing section:
When I change this to:
task jarWithPlainPom(type: Jar) {
from sourceSets.main.output
from configurations.runtime
}
publishing {
publications {
mavenJava(MavenPublication) {
artifact jarWithPlainPom
}
}
}
It includes most of the needed dependencies, however the POM is not updated and the project fails when importing the plugin.

Querydsl error on deploy heroku

I have a Springboot application using gradle that builds fine on my local machine, but when i try to deploy it on heroku i get the following output:
FAILURE: Build failed with an exception.
* Where:
Build file '/tmp/build_67ca1dce3ca8263f014681c911e8b92e/build.gradle' line: 24
* What went wrong:
A problem occurred evaluating root project 'build_67ca1dce3ca8263f014681c911e8b92e'.
> Could not generate a proxy class for class com.ewerk.gradle.plugins.tasks.QuerydslCompile.
Does anyone have any ideia on what the problem is?
Below is the build.gradle:
buildscript {
ext {
springBootVersion = '1.2.5.RELEASE'
}
repositories {
mavenCentral()
maven {
url "https://plugins.gradle.org/m2/"
}
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
classpath("io.spring.gradle:dependency-management-plugin:0.5.2.RELEASE")
classpath "gradle.plugin.com.ewerk.gradle.plugins:querydsl-plugin:1.0.4"
classpath("org.flywaydb:flyway-gradle-plugin:3.1")
classpath "info.robotbrain.gradle.lombok:lombok-gradle:1.1"
}
}
apply plugin: 'java'
apply plugin: 'idea'
apply plugin: 'spring-boot'
apply plugin: 'io.spring.dependency-management'
apply plugin: "com.ewerk.gradle.plugins.querydsl"
apply plugin: 'flyway'
apply plugin: "info.robotbrain.lombok"
// Profile
def env = hasProperty('profile') ? profile : 'dev'
apply from: "${env}.gradle"
// QueryDSL
querydsl {
jpa = true
}
jar {
baseName = 'web-server'
version = '0.0.1-SNAPSHOT'
}
repositories {
mavenLocal()
mavenCentral()
}
dependencies {
//Spring Boot
compile("org.springframework.boot:spring-boot-starter-web") {
exclude module: "spring-boot-starter-tomcat"
exclude module: "spring-boot-starter-logging"
}
compile("org.springframework.boot:spring-boot-starter-jetty")
compile("org.springframework.boot:spring-boot-starter-log4j")
compile("org.springframework.boot:spring-boot-starter-data-jpa")
// QueryDSL
compile("com.mysema.querydsl:querydsl-jpa:3.6.1")
// PostGreSQL
compile("org.postgresql:postgresql:9.4-1202-jdbc42")
// Guava
compile("com.google.guava:guava:18.0")
//Quartz-Scheduler
compile("org.quartz-scheduler:quartz:2.2.1")
//Spring
compile('org.springframework:spring-beans:4.2.1.RELEASE')
compile('org.springframework:spring-context:4.2.1.RELEASE')
compile('org.springframework:spring-context-support:4.2.1.RELEASE')
compile('org.springframework:spring-core:4.2.1.RELEASE')
compile group: 'org.springframework.boot', name: 'spring-boot-starter-security'
//Mail
compile('javax.mail:javax.mail-api:1.5.4')
compile('com.sun.mail:javax.mail:1.5.4')
//Lombok
compile('org.projectlombok:lombok-maven:1.16.6.1')
//Security
compile('org.springframework.security.oauth:spring-security-oauth2:2.0.8.RELEASE')
compile('javax.ws.rs:javax.ws.rs-api:2.0-m01')
//Guice
compile('com.google.inject:guice:3.0')
//Jersey
compile('com.sun.jersey:jersey-bundle:1.18')
//Dozer
compile('net.sf.dozer:dozer:5.5.1')
//Flyway API
compile "org.flywaydb:flyway-core:3.2.1"
testCompile("org.springframework.boot:spring-boot-starter-test")
testCompile("com.github.springtestdbunit:spring-test-dbunit:1.2.1")
testCompile("org.dbunit:dbunit:2.5.0")
testCompile('com.jayway.jsonpath:json-path:2.0.0')
testCompile('com.fasterxml.jackson.core:jackson-databind:2.3.1')
testCompile("com.mysema.querydsl:querydsl-jpa:3.6.1")
configurations.all {
exclude module: 'slf4j-log4j12'
}
}
task wrapper(type: Wrapper) {
gradleVersion = '2.3'
}
springBoot {
mainClass = 'net.xendurance.webServer.configuration.WebServerApplication'
}
task stage {
dependsOn installDist
}

Categories