GAE - Class 未找到:由以下原因引起:java.lang.ClassNotFoundExceptionAppIdentityCredential$AppEngineCredentialWrapper

GAE - Class not found: Caused by: java.lang.ClassNotFoundExceptionAppIdentityCredential$AppEngineCredentialWrapper

我正在尝试在 GAE 上启动一个简单的 Java (Maven) Spring 引导应用程序,该应用程序与 PostrgreSql 服务器(也在云平台上)通信,但是我保留 运行 缺少依赖项。

我的 pom 中有这些依赖项:

    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-gcp-starter</artifactId>
      <version>1.1.3.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-gcp-starter-sql-postgresql</artifactId>
      <version>1.1.3.RELEASE</version>
    </dependency>

但是每当我将应用程序部署到 GAE 和 FlyWay 时,都会抛出以下内容:

java.lang.ClassNotFoundException: com.google.appengine.api.ThreadManager

我主要是按照这里的 Baeldung 教程:https://www.baeldung.com/spring-boot-google-app-engine

然后我找到了这个答案:AppEngine ClassNotFoundException: com.google.appengine.api.datastore.DatastoreServiceFactory 这导致我添加了 appengine 依赖项:

    <dependency>
      <groupId>com.google.appengine</groupId>
      <artifactId>appengine-api-1.0-sdk</artifactId>
      <version>1.9.77</version>
    </dependency>

然后抛出:

ClassNotFoundException: com.google.api.client.googleapis.extensions.appengine.auth.oauth2.AppIdentityCredential$AppEngineCredentialWrapper

这让我添加了客户端依赖..等等..等等..

我现在的完整依赖集是:

    <dependency>
      <groupId>com.google.cloud</groupId>
      <artifactId>google-cloud</artifactId>
      <version>0.47.0-alpha</version>
    </dependency>
    <dependency>
      <groupId>com.google.appengine</groupId>
      <artifactId>appengine-api-1.0-sdk</artifactId>
      <version>1.9.77</version>
    </dependency>
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-gcp-starter</artifactId>
      <version>1.1.3.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-gcp-starter-sql-postgresql</artifactId>
      <version>1.1.3.RELEASE</version>
    </dependency>

那.. 又回到了上面的异常:

ClassNotFoundException: com.google.api.client.googleapis.extensions.appengine.auth.oauth2.AppIdentityCredential$AppEngineCredentialWrapper

所以这可能是一个依赖性问题,但我终其一生都找不到任何关于您需要添加哪些依赖性来获得一个简单的 Spring 启动应用程序 运行 PostgreSQL 服务器的文档。

我要认输了... 不过可能是睡眠不足

您的 pom.xml 中缺少 App Engine 插件:

<build>
  <plugins>
    <plugin>
      <groupId>com.google.cloud.tools</groupId>
      <artifactId>appengine-maven-plugin</artifactId>
      <version>1.3.2</version>
    </plugin>
  </plugins>
</build>

对于你得到的异常,我不知道你在哪里使用它,但你可以添加依赖项:

<dependency>
<groupId>com.google.auth</groupId>
  <artifactId>google-auth-library-oauth2-http</artifactId>
  <version>0.18.0</version>
</dependency>