首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >maven程序集:无法解决的编译错误

maven程序集:无法解决的编译错误
EN

Stack Overflow用户
提问于 2012-10-17 20:16:04
回答 1查看 4K关注 0票数 1

我有一个应用程序,它使用Maven构建一个带有maven-assembly-plugin的JAR。

该项目包括一个依赖项列表,其中一个是另一个Maven项目。我正在使用Eclipse进行开发,当我运行该项目时,一切工作正常。当我使用Maven assembly:assembly进行构建时,它会生成JAR,但当我运行JAR时,它会给出以下错误:

代码语言:javascript
复制
Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
    The method configure(Map<String,String>) of type SMTPMailService must 
      override a superclass method
    at rey.sto.utils.mail.SMTPMailService.configure(SMTPMailService.java:89)
    at com.ppl_sftp.transfer.FileTransfer.startTransfer(FileTransfer.java:232)
    at com.ppl_sftp.transfer.MainApp.main(MainApp.java:33)

以下是主项目的pom.xml文件:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org  /2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

<modelVersion>4.0.0</modelVersion>

<groupId>com.ppl-sftp</groupId>
<artifactId>transfer</artifactId>
<packaging>jar</packaging>
<version>0.0.1-SNAPSHOT</version>

<name>A Camel Route</name>
<url>http://www.myorganization.org</url>

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>

<dependencies>
    <!-- logging -->

    <!-- testing -->
    <dependency>
        <groupId>org.apache.camel</groupId>
        <artifactId>camel-core</artifactId>
        <version>2.10.0</version>
        <type>jar</type>
        <optional>false</optional>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.6.6</version>
        <type>jar</type>
        <optional>false</optional>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>1.6.6</version>
        <type>jar</type>
        <optional>false</optional>
    </dependency>
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.16</version>
        <type>jar</type>
        <optional>false</optional>
    </dependency>
    <dependency>
        <groupId>org.xerial</groupId>
        <artifactId>sqlite-jdbc</artifactId>
        <version>3.7.2</version>
        <type>jar</type>
        <optional>false</optional>
    </dependency>
    <dependency>
        <groupId>org.apache.camel</groupId>
        <artifactId>camel-test</artifactId>
        <version>2.10.0</version>
        <type>jar</type>
        <scope>test</scope>
        <optional>false</optional>
    </dependency>
    <dependency>
        <groupId>org.apache.camel</groupId>
        <artifactId>camel-ftp</artifactId>
        <version>2.9.2</version>
        <type>jar</type>
        <optional>false</optional>
    </dependency>

    <dependency>
        <groupId>my-utils</groupId>
        <artifactId>my-utils</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </dependency>
    <dependency>
         <groupId>javax.activation</groupId>
         <artifactId>activation</artifactId>
         <version>1.1</version>
        </dependency>
    <dependency>
        <groupId>com.sun.mail</groupId>
        <artifactId>javax.mail</artifactId>
        <version>1.4.5</version>
    </dependency>
</dependencies>

<build>
    <defaultGoal>install</defaultGoal>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.5</version>
            <configuration>
                <source>1.6</source>
                <target>1.6</target>
            </configuration>
        </plugin>
        <!-- allows the route to be ran via 'mvn camel:run' -->
        <plugin>
            <groupId>org.apache.camel</groupId>
            <artifactId>camel-maven-plugin</artifactId>
            <version>2.10.0</version>
        </plugin>
        <!-- Allows the example to be run via 'mvn compile exec:java' -->
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <version>1.2.1</version>
            <configuration>
                <mainClass>com.ppl_sftp.transfer.MainApp</mainClass>
                <includePluginDependencies>false</includePluginDependencies>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <configuration>
                <archive>
                    <manifest>
                        <mainClass>com.ppl_sftp.transfer.MainApp</mainClass>
                    </manifest>
                </archive>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
            </configuration>
        </plugin>
    </plugins>
</build>

下面是my-utils项目依赖项的pom:

代码语言:javascript
复制
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>rey-sto-utils</groupId>
<artifactId>rey-sto-utils</artifactId>
<version>0.0.1-SNAPSHOT</version>
<build>
    <sourceDirectory>src</sourceDirectory>
    <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.5</version>
            <configuration>
                <source>1.6</source>
                <target>1.6</target>
            </configuration>
        </plugin>
    </plugins>
</build>
<dependencies>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>2.0-beta2</version>
        <type>pom</type>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.21</version>
    </dependency>
    <dependency>
        <groupId>ojdbc6</groupId>
        <artifactId>ojdbc6</artifactId>
        <version>6</version>
    </dependency>
    <dependency>
        <groupId>javax.activation</groupId>
        <artifactId>activation</artifactId>
        <version>1.1</version>
    </dependency>
    <dependency>
        <groupId>com.sun.mail</groupId>
        <artifactId>javax.mail</artifactId>
        <version>1.4.5</version>
    </dependency>
</dependencies>

这个问题与Java邮件依赖有关。如您所见,我使用过com.sun.mail,但我看到了一些与javax.mail对应的其他库。

也许我在pom中遗漏了一些东西,比如配置参数或插件。

我还尝试在我的本地存储库中放置一个在其他项目中运行良好的mail.jar,但我得到了相同的错误。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-17 21:39:38

“未解决的编译问题”来自您的utils项目中的一个类文件,Eclipse已经对其进行了编译,但是Eclipse无法正确地对其进行编译。

您在Eclipse和Maven中看到不同结果的原因是它们使用了不同版本的类文件。Eclipse正在进行工作区解析,因此它使用utils/target/ SMTPMailService中的类版本。Maven正在解析本地Maven存储库中的utils jar,当您在Eclipse中遇到编译错误时,通过运行mvn install将其放入其中。

尝试在utils项目中运行mvn clean install (clean删除任何由Eclipse生成的类文件,install替换本地存储库中的jar )。然后重新生成程序集。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12934126

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档