我对GoogleAPI有一些问题 .
Tomcat工作正常,但是当我写这些时,我的tomcat无法正常工作 .
HttpTransport transport = new NetHttpTransport();
JsonFactory jsonFactory = new JacksonFactory();
这是我的控制器 .
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.Reader;
import java.io.Writer;
import java.nio.charset.Charset;
import java.security.GeneralSecurityException;
import java.util.Arrays;
import java.util.Collections;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.google.api.client.googleapis.auth.oauth2.GoogleIdToken;
import com.google.api.client.googleapis.auth.oauth2.GoogleIdToken.Payload;
import com.google.api.client.http.HttpTransport;
import com.google.api.client.http.javanet.NetHttpTransport;
import com.google.api.client.json.JsonFactory;
import com.google.api.client.json.JsonParser;
import com.google.api.client.json.jackson2.JacksonFactory;
import com.google.api.client.googleapis.auth.oauth2.GoogleIdTokenVerifier;
import airbnb.dao.CustomerDAO;
import airbnb.vo.CustomerVO;
public class CustomerController extends HttpServlet{
/**
*
*/
private static final long serialVersionUID = 1L;
private static final String CLIENT_ID = "Client_id";
@Override
public void init() throws ServletException {
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String mode = req.getParameter("mode");
//String customerCheck = req.getParameter("customerName");
System.out.println("customerCheck");
String id_token = req.getParameter("id_token");
System.out.println("id_token"+id_token);
HttpTransport transport = new NetHttpTransport();//*
JsonFactory jsonFactory = new JacksonFactory();//*
GoogleIdTokenVerifier verifier = new GoogleIdTokenVerifier.Builder(transport, jsonFactory)
.setAudience(Collections.singletonList(CLIENT_ID))
// Or, if multiple clients access the backend:
//.setAudience(Arrays.asList(CLIENT_ID_1, CLIENT_ID_2, CLIENT_ID_3))
.build();
GoogleIdToken idToken = null;
try {
idToken = verifier.verify(id_token);
} catch (GeneralSecurityException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
if (idToken != null) {
Payload payload = idToken.getPayload();
// Print user identifier
String userId = payload.getSubject();
System.out.println("User ID: " + userId);
// Get profile information from payload
String email = payload.getEmail();
boolean emailVerified = Boolean.valueOf(payload.getEmailVerified());
String name = (String) payload.get("name");
String pictureUrl = (String) payload.get("picture");
String locale = (String) payload.get("locale");
String familyName = (String) payload.get("family_name");
String givenName = (String) payload.get("given_name");
// Use or store profile information
// ...
System.out.println("User ID: " + userId);
System.out.println("email: " + email);
System.out.println("emailVerified: " + emailVerified);
System.out.println("name: " + name);
System.out.println("pictureUrl: " + pictureUrl);
System.out.println("locale: " + locale);
System.out.println("familyName: " + familyName);
System.out.println("givenName: " + givenName);
} else {
System.out.println("Invalid ID token.");
}
}
}
这是错误 .
java.util.concurrent.ExecutionException:org.apache.catalina.LifecycleException:无法在java.util.concurrent.FutureTask.report(未知)启动组件[StandardEngine [Catalina] .StandardHost [localhost] .StandardContext [/ Airbnb]]来自)org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:939)的java.util.concurrent.FutureTask.get(未知来源)org.apache.catalina.core.StandardHost.startInternal(StandardHost . java:872)org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)org.apache.catalina.core.ContainerBase $ StartChild.call(ContainerBase.java:1419)org.apache.catalina .core.ContainerBase $ StartChild.call(ContainerBase.java:1409)位于java.util.concurrent.ThreadPoolExecutor.runWorker(未知来源)的java.util.concurrent.FutureTask.run(未知来源)java.util.concurrent . java.lang.Thread.run中的ThreadPoolExecutor $ Worker.run(未知来源)(未知来源)引起:org.apache.catalina.LifecycleException:无法启动组件nent [StandardEngine [Catalina] .StandardHost [localhost] .StandardContext [/ Airbnb]] org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167)... 6更多引起:java.lang.NoClassDefFoundError :com / google / api / client / http / HttpTransport at java.lang.Class.getDeclaredFields0(Native Method)at java.lang.Class.privateGetDeclaredFields(Unknown Source)at java.lang.Class.getDeclaredFields(Unknown Source)at org .apache.catalina.util.Introspection.getDeclaredFields(Introspection.java:110)org.apache.catalina.startup.WebAnnotationSet.loadFieldsAnnotation(WebAnnotationSet.java:262)org.apache.catalina.startup.WebAnnotationSet.loadApplicationServletAnnotations(WebAnnotationSet) .java:136)org.apache.catalina.startup.WebAnnotationSet.loadApplicationAnnotations(WebAnnotationSet.java:66)位于org.apache.catalina的org.apache.catalina.startup.ContextConfig.applicationAnnotationsConfig(ContextConfig.java:328) . 在org.apache的startup.ContextConfig.configureStart(ContextConfig.java:778) . catgina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:299)org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:94)org.apache.catalina.core.StandardContext.startInternal(StandardContext.java: 5105)at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)... 6更多引起:java.lang.ClassNotFoundException:com.google.api.client.http.HttpTransport at org.apache org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1119).catalina.loader.WebappClassLoaderBase.loadClass .apache.catalina.core.ContainerBase startInternal重大:启动时子容器失败java.util.concurrent.ExecutionException:org.apache.catalina.LifecycleException:无法在java启动组件[StandardEngine [Catalina] .StandardHost [localhost]] java.util.concurrent.FutureTask.get中的.util.concurrent.FutureTask.report(未知来源)(未知来自org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:939)org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:262)org.apache.catalina.util.LifecycleBase .start(LifecycleBase.java:150)org.apache.catalina.core.StandardService.startInternal(StandardService.java:422)org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)at org . apache.catalina.core.StandardServer.startInternal(StandardServer.java:793)org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)org.apache.catalina.startup.Catalina.start(Catalina . java:656)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)at java.lang.reflect.Method.invoke org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:355)org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:495)中的(未知来源) by:org.apache.catalina.LifecycleException:无法在org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167)启动组件[StandardEngine [Catalina] .StandardHost [localhost]]org.apache.catalina.core.ContainerBase $ StartChild.call(ContainerBase.java:1419)atg.apache.catalina.core.ContainerBase $ StartChild.call(ContainerBase.java:1409)at java.util.concurrent.FutureTask . 运行(未知来源)java.util.concurrent.ThreadPoolExecutor.runWorker(未知来源)java.util.concurrent.ThreadPoolExecutor $ Worker.run(未知来源)java.lang.Thread.run(未知来源)引起: org.apache.catalina.LifecycleException:org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:947)org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:)启动时子容器失败872)在org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)... 6更多11 21,2017 10:16:54午前org.apache.catalina.startup.Catalina start重大:所需服务器组件无法启动,因此Tomcat无法启动 . org.apache.catalina.LifecycleException:无法在org.apache.catalina.startup.Catalina.start的org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167)启动组件[StandardServer [8005]]( Catalina.java:656)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)at java.lang.reflect.Method .invoke(未知来源)org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:355)org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:495)引起:org.apache .catalina.LifecycleException:在org.apache.catalina.core.StandardServer.startInternal(StandardServer.java)的org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167)上启动组件[StandardService [Catalina]]失败 . :793)org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)... 7更多引起:org.apache.catalina.LifecycleException:Fail ed在org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167)的org.apache.catalina.core.StandardService.startInternal(StandardService.java:422)org处启动组件[StandardEngine [Catalina]] .apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)... 9更多引起:org.apache.catalina.LifecycleException:在org.apache.catalina.core.ContainerBase启动期间子容器失败 . startInternal(ContainerBase.java:947)org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:262)org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)... 11更多
条件:jdk 1.8,Tomcat 8.5
请帮我解决这个错误 .
如果您想了解更多信息,请告诉我 . 我会上传它 .
谢谢 .
1 回答
检查这一行:
你需要在here的Tomcat类路径中添加
google-api-client
jar文件