0

Working from the understanding that com.google.firebase.database.ValueEventListener is a run-time dependency how do I add it to the classpath with Gradle?

thufir@doge:~/NetBeansProjects/Firebase$ 
thufir@doge:~/NetBeansProjects/Firebase$ gradle jar

BUILD SUCCESSFUL in 33s
3 actionable tasks: 2 executed, 1 up-to-date
thufir@doge:~/NetBeansProjects/Firebase$ 
thufir@doge:~/NetBeansProjects/Firebase$ java -jar build/libs/Firebase.jar 
Jul 06, 2017 5:09:06 PM net.bounceme.dur.firebase.Main main
INFO: init..
Exception in thread "main" java.lang.NoClassDefFoundError: com/google/firebase/database/ValueEventListener
    at net.bounceme.dur.firebase.Main.<init>(Main.java:13)
    at net.bounceme.dur.firebase.Main.main(Main.java:17)
Caused by: java.lang.ClassNotFoundException: com.google.firebase.database.ValueEventListener
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 2 more
thufir@doge:~/NetBeansProjects/Firebase$ 
thufir@doge:~/NetBeansProjects/Firebase$ jar -tf build/libs/Firebase.jar 
META-INF/
META-INF/MANIFEST.MF
net/
net/bounceme/
net/bounceme/dur/
net/bounceme/dur/firebase/
net/bounceme/dur/firebase/PropertiesHelper.class
net/bounceme/dur/firebase/FirebaseQuery.class
net/bounceme/dur/firebase/FirebaseAdd.class
net/bounceme/dur/firebase/UserHelper.class
net/bounceme/dur/firebase/Main.class
net/bounceme/dur/firebase/User.class
net/bounceme/dur/firebase/FirebaseQuery$1.class
firebase.json
firebase.properties
dur/
dur/bounceme/
dur/bounceme/net/
dur/bounceme/net/firebase/
thufir@doge:~/NetBeansProjects/Firebase$ 
thufir@doge:~/NetBeansProjects/Firebase$ tree build/libs/
build/libs/
├── dur
│   └── bounceme
│       └── net
│           └── firebase
│               ├── FirebaseAdd.class
│               ├── FirebaseQuery$1.class
│               ├── FirebaseQuery.class
│               ├── Main.class
│               ├── PropertiesHelper.class
│               ├── User.class
│               └── UserHelper.class
├── Firebase.jar
└── META-INF
    └── MANIFEST.MF

5 directories, 9 files
thufir@doge:~/NetBeansProjects/Firebase$ 
thufir@doge:~/NetBeansProjects/Firebase$ cat build.gradle
plugins {
    id 'com.gradle.build-scan' version '1.8' 
    id 'java'
    id 'application'
}

buildScan {
    licenseAgreementUrl = 'https://gradle.com/terms-of-service'
    licenseAgree = 'yes'
}

repositories {
    jcenter()
}

jar {
    manifest {
        attributes 'Main-Class': 'net.bounceme.dur.firebase.Main'
    }
}

dependencies {
    //compile fileTree(dir: 'libs', include: ['*.jar'])

    // https://mvnrepository.com/artifact/com.google.firebase/firebase-admin
    compile group: 'com.google.firebase', name: 'firebase-admin', version: '5.2.0'

    // https://mvnrepository.com/artifact/com.google.firebase/firebase-server-sdk
    compile group: 'com.google.firebase', name: 'firebase-server-sdk', version: '3.0.3'

    // https://mvnrepository.com/artifact/com.firebase/firebase-client-jvm
    compile group: 'com.firebase', name: 'firebase-client-jvm', version: '2.5.2'
}
thufir@doge:~/NetBeansProjects/Firebase$ 

related to another question.

Thufir
  • 8,216
  • 28
  • 125
  • 273
  • 1
    Why are you adding all three of firebase-admin, firebase-server-sdk, and firebase-client-jvm? The URL you give for firebase-server-sdk clearly states that it's deprecated, and firebase-client-jvm is from a really old version of Firebase. Everything you need should be in firebase-admin, and it's already added as a compile dependency, so there should be no problems. – Doug Stevenson Jul 07 '17 at 00:48
  • Also, what are you trying to do, and what is the problem? – Doug Stevenson Jul 07 '17 at 00:48
  • the problem is that the JAR doesn't execute. I attribute the problem to a missing runtime dependency. I'll just use Firebase-admin going forward, thanks for pointing that out. I asked a narrower question here: https://stackoverflow.com/questions/44965650/packaging-a-library-with-gradle-for-runtime-dependency-to-a-jar just about using gradle to build JAR's. – Thufir Jul 07 '17 at 08:06

0 Answers0