Я создаю серверную часть для своего приложения для Android с помощью Google App Engine. Я делаю что-то очень простое, а именно инициализирую свой Firebase Admin SDK, следуя инструкциям здесь - https://firebase.google.com/docs/admin/setup.
Когда я делаю это и запускаю, я получаю следующую ошибку:
java.lang.NoClassDefFoundError: org.slf4j.LoggerFactory — это ограниченный класс. Дополнительные сведения см. в руководстве разработчика Google App Engine. на com.google.appengine.tools.development.agent.runtime.Runtime.reject(Runtime.java:52) на com.google.firebase.internal.FirebaseThreadManagers.(FirebaseThreadManagers.java:37) на com.google.firebase. FirebaseOptions$Builder.(FirebaseOptions.java:147) в com.example.app.myapplication.backend.MyServlet.doGet(MyServlet.java:34)
Вот мой сервлет, который отлично работает без дополнений Firebase. Ошибка возникает в FirebaseOptions:
public class MyServlet extends HttpServlet {
@Override
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException {
resp.setContentType("text/plain");
resp.getWriter().println("Please use the form to POST to this url");
FileInputStream serviceAccount =
new FileInputStream("WEB-INF/MyAppServiceKey.json");
FirebaseOptions options = new FirebaseOptions.Builder()
.setCredential(FirebaseCredentials.fromCertificate(serviceAccount))
.setDatabaseUrl("https://MyApp.firebaseio.com")
.build();
FirebaseApp.initializeApp(options);
}
@Override
public void doPost(HttpServletRequest req, HttpServletResponse resp)
throws IOException {
String name = req.getParameter("name");
resp.setContentType("text/plain");
if (name == null) {
resp.getWriter().println("Please enter a name");
}
resp.getWriter().println("Hello " + name);
}
}
Вот мой build.gradle для бэкенда:
buildscript {
repositories {
jcenter()
google()
}
dependencies {
classpath 'com.google.appengine:gradle-appengine-plugin:1.9.42'
}
}
repositories {
jcenter();
}
apply plugin: 'java'
apply plugin: 'war'
apply plugin: 'appengine'
sourceCompatibility = JavaVersion.VERSION_1_7
targetCompatibility = JavaVersion.VERSION_1_7
dependencies {
appengineSdk 'com.google.appengine:appengine-java-sdk:1.9.42'
compile 'javax.servlet:servlet-api:2.5'
compile 'com.google.firebase:firebase-admin:5.5.0'
}
appengine {
downloadSdk = true
appcfg {
oauth2 = true
}
}