当前位置: 首页 > 知识库问答 >
问题:

Maven编译器出错

管峻
2023-03-14
package com.example;

import com.google.api.client.http.InputStreamContent;
import com.google.api.services.storage.Storage;
import com.google.api.services.storage.model.Bucket;
import com.google.api.services.storage.model.ObjectAccessControl;
import com.google.api.services.storage.model.Objects;
import com.google.api.services.storage.model.StorageObject;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.security.GeneralSecurityException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.io.FileOutputStream;

import javax.servlet.*;
import javax.servlet.http.Part;
import javax.servlet.http.*;

public class upload extends HttpServlet {

/*protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    String Bucket = request.getParameter("Bucket"); // Retrieves <input type="text" name="description">
    Part filePart = request.getPart("File"); // Retrieves <input type="file" name="file">
    String fileName = filePart.getSubmittedFileName();
    InputStream fileContent = filePart.getInputStream();
    // ... (do your job here)
}*/

public static void uploadFile(String name, String contentType, File file, String bucketName)
      throws IOException, GeneralSecurityException {
    InputStreamContent contentStream = new InputStreamContent(
        contentType, new FileInputStream(file));
    // Setting the length improves upload performance
    contentStream.setLength(file.length());
    StorageObject objectMetadata = new StorageObject()
        // Set the destination object name
        .setName(name)
        // Set the access control list to publicly read-only
        .setAcl(Arrays.asList(
            new ObjectAccessControl().setEntity("allUsers").setRole("READER")));

    // Do the insert
    Storage client = StorageFactory.getService();
    Storage.Objects.Insert insertRequest = client.objects().insert(
        bucketName, objectMetadata, contentStream);

    insertRequest.execute();
  }

}

给我错误的代码是这样的

Storage client = StorageFactory.getService();

我收到的错误消息是

 [ERROR] /home/jy/Desktop/cloud2/example/src/main/java/com/example/upload.java:[50,21]

错误:找不到符号[ERROR]->[Help 1]org.apache.maven.lifecycle.lifecycle.lifecycleExecutionException:未能在项目上执行目标org.apache.maven.plugins:maven-compiler-plugin:2.5.1:compile(default-compile)示例:编译失败/home/jy/desktop/cloud2/example/src/main/java/com/example/upload.java:[50,21]错误:找不到符号

  at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:212)
  at org.apache.maven.plugin.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:729)

在org.apache.maven.plugin.compilermojo.execute(compilermojo.java:128)在org.apache.maven.plugin.defaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)在org.apache.maven.lifecycle.internal.mojoExecutor.execute(MojoExecutor.execute(MojoExecutor.java:207)...20更多[ERROR][ERROR][ERROR][ERROR

以下是我的pom文件的样子(非常混乱,因为我只是在尝试代码):

<properties>
    <appengine.version></appengine.version>
</properties>

<dependencies>
    <!-- Compile/runtime dependencies -->
    <dependency>
        <groupId>com.google.appengine</groupId>
        <artifactId>appengine-api-1.0-sdk</artifactId>
        <version>${appengine.version}</version>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.1.0</version>
    </dependency>

    <dependency>
        <groupId>jstl</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
    </dependency>
    <dependency>
        <groupId>com.google.oauth-client</groupId>
        <artifactId>google-oauth-client-jetty</artifactId>
        <version>1.21.0</version>
    </dependency>
    <!-- Test Dependencies -->
    <dependency>
        <groupId>com.google.appengine</groupId>
        <artifactId>appengine-testing</artifactId>
        <version>${appengine.version}</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>com.google.appengine</groupId>
        <artifactId>appengine-api-stubs</artifactId>
        <version>${appengine.version}</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>com.google.apis</groupId>
        <artifactId>google-api-services-storage</artifactId>
        <version>v1-rev65-1.21.0</version>
    </dependency>
    <dependency>
        <groupId>javax</groupId>
        <artifactId>javaee-api</artifactId>
        <version>6.0</version>
    </dependency>
    <dependency>
        <groupId>com.google.gcloud</groupId>
        <artifactId>gcloud-java</artifactId>
        <version>0.1.7</version>
    </dependency>
    <dependency>
        <groupId>com.google.appengine.tools</groupId>
        <artifactId>appengine-gcs-client</artifactId>
        <version>RELEASE</version>
    </dependency>
    <dependency>
        <groupId>com.google.truth</groupId>
        <artifactId>truth</artifactId>
        <version>0.28</version>
        <scope>test</scope>
    </dependency>
</dependencies>

<build>
    <!-- for hot reload of the web application -->
    <outputDirectory>${project.build.directory}/${project.build.finalName}/WEB-INF/classes</outputDirectory>
    <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>versions-maven-plugin</artifactId>
            <version>2.1</version>
            <executions>
                <execution>
                    <phase>compile</phase>
                    <goals>
                        <goal>display-dependency-updates</goal>
                        <goal>display-plugin-updates</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <version>2.5.1</version>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.7</source>
                <target>1.7</target>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.3</version>
            <configuration>
                <archiveClasses>true</archiveClasses>
                <webResources>
                    <!-- in order to interpolate version from pom into appengine-web.xml -->
                    <resource>
                        <directory>${basedir}/src/main/webapp/WEB-INF</directory>
                        <filtering>true</filtering>
                        <targetPath>WEB-INF</targetPath>
                    </resource>
                </webResources>
            </configuration>
        </plugin>

        <plugin>
            <groupId>com.google.appengine</groupId>
            <artifactId>appengine-maven-plugin</artifactId>
            <version>${appengine.version}</version>
            <configuration>
                <enableJarClasses>false</enableJarClasses>
                <version>${app.version}</version>
                <!-- Comment in the below snippet to bind to all IPs instead of just 
                    localhost -->
                <!-- address>0.0.0.0</address> <port>8080</port -->
                <!-- Comment in the below snippet to enable local debugging with a remote 
                    debugger like those included with Eclipse or IntelliJ -->
                <!-- jvmFlags> <jvmFlag>-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n</jvmFlag> 
                    </jvmFlags -->
            </configuration>
        </plugin>
        <plugin>
            <groupId>com.google.appengine</groupId>
            <artifactId>gcloud-maven-plugin</artifactId>
            <version>${gcloud.plugin.version}</version>
            <configuration>
                <set_default>true</set_default>
            </configuration>
        </plugin>
    </plugins>
</build>

这是我的Maven版本

Apache Maven 3.3.9(BB52D8502B132EC0A5A3F4C09453C07478323DC5;2015-11-10T08:41:47-08:00)Maven Home://jy/desktop/apache-maven-3.3.9 Java版本:1.7.0_80,供应商:Oracle Corporation Java Home://usr/lib/jvm/java-7-Oracle/JRE默认区域设置:en_US,平台编码:UTF-8 OS名称:“Linux”,版本:“4.2.0-27-generic”,arch:“AMD64”,家族:“UNIX”

共有1个答案

充修能
2023-03-14

您可能复制并粘贴了来自官方GAE示例的代码。

您应该在GitHub上查看相关的完整项目代码。StorageSample及其UploadFile方法提供了类似的代码。

Maven编译器(以及任何其他编译器/IDE)都找不到相关的StorageFactory类,因为它不是GAE依赖项的一部分,而是作为示例项目的一部分提供的自定义类:StorageFactory

 类似资料:
  • 我需要使用maven插件为GWT编译器设置输出目录位置。 我调查了GWT编译器和gwt-maven-plugin文档,没有找到任何选项。 例如: 我有两个模块,分别名为编辑器和控制台,gwt maven插件将它们编译为根目录编辑器和控制台目录。 但我需要将这些模块编译到

  • 我无法从命令行编译Maven项目。我使用的是Maven版本: Apache Maven 3.5.4 null 这是我的pom.xml(没有依赖项): 新的堆栈跟踪是:

  • 当我从Eclipse构建到maven构建时,我发现了项目中的许多问题。我使用2.5.1编译器插件。 JDK是开放的-JDK-7 我在一个新项目中隔离了这个问题,并对其进行了深入研究。问题是: 这无法使用javaC进行编译(但在Eclipse中工作),并说明以下错误: [错误]无法执行目标组织。阿帕奇。专家插件:maven编译器插件:2.5.1:项目测试时编译(默认编译):编译失败 [错误]/hom

  • 我使用maven插件创建了gwt项目: 然后我使用生成的pom.xml文件创建了一个新的IDEA项目。目前Project Compiler Output文件夹指向,像往常一样,我将其设置为ProjectName/目标文件夹,以使用maven和IDEA构建项目,但当我运行maven install时,我没有在ProjectName/目标目录中找到类文件夹。混合IDEA、Maven for GWT项目

  • 我已经搜索了所有关于为什么我们应该有不同于目标的来源,但不一致的答案: 如果JDK向下兼容,为什么在1.7上编译时需要将目标设置为1.8? 将源设置为高于目标将不起作用,例如错误: 源版本8需要目标版本1.8 同样来自Maven: 仅仅设置target选项并不能保证代码在具有指定版本的JRE上实际运行。陷阱在于无意中使用了只存在于后来的JRE中的API,这会导致代码在运行时出现链接错误 有人能举个

  • 问题内容: 当我在Netbeans中构建并运行程序时,它可以正常工作。但是当我尝试“ mvn compile”时,使用相同的pom.xml文件会出现以下错误: 我的Java版本不是1.3,这里是“ mvn -version”的结果 这是第53行: 问题答案: 问题是在Maven2中默认使用和 您可以通过将其添加到pom中来解决此问题: 将其放在最顶层的父pom中是很实际的,这样您派生的pom不需要

  • 编译模块com。实例我的包裹。GWT。HelloGWT [INFO]验证新编译的单元 [INFO]在第一次过程中忽略了1个单元,其中包含编译错误 [INFO]编译时将-strict或-logLevel设置为TRACE或DEBUG以查看所有错误 [INFO]在文件:/home/ilsurih/Projects/maven hibernate/src/main/java/com/example/myP