昨天碰到一个让我很崩溃的问题。我在我的java程序里面调用MavenCli的API来执行一个maven命令。在Eclipse中运行一切正常。然后我用maven assebly把程序打成一个包含dependency的jar包,用java -jar 命令来执行这个程序的时候,却死活不工作了,出现以下的Exception:
org.codehaus.plexus.component.repository.exception.ComponentLookupException: com.google.inject.ProvisionException: Unable to provision, see the following errors:
1) No implementation for org.eclipse.aether.RepositorySystem was bound.
while locating org.apache.maven.artifact.resolver.DefaultArtifactResolver
at ClassRealm[plexus.core, parent: null] (via modules: org.eclipse.sisu.wire.WireModule -> org.eclipse.sisu.plexus.PlexusBindingModule)
at ClassRealm[plexus.core, parent: null] (via modules: org.eclipse.sisu.wire.WireModule -> org.eclipse.sisu.plexus.PlexusBindingModule)
while locating org.apache.maven.artifact.resolver.ArtifactResolver
while locating org.apache.maven.repository.legacy.LegacyRepositorySystem
at ClassRealm[plexus.core, parent: null] (via modules: org.eclipse.sisu.wire.WireModule -> org.eclipse.sisu.plexus.PlexusBindingModule)
at ClassRealm[plexus.core, parent: null] (via modules: org.eclipse.sisu.wire.WireModule -> org.eclipse.sisu.plexus.PlexusBindingModule)
while locating org.apache.maven.repository.RepositorySystem
......
从这些错误看起来,像是少了什么Dependency。所以我就以为是Maven的Dependency有版本冲突,花了很多时间来替换测试,结果一点都没有用。
后来在绝望之下,我只能尝试用maven exec:java的命令来运行这个程序。Bingo,工作了!后来跟同事交谈,了解到Assembly把Dependency的class文件全部打到jar里,有些情况下可能会导致class的冲突。下次知道了,如果还碰到这种情况,记得用maven exec:java命令来试试哦。
P.S.以下是我用来打包的maven assembly配置:
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.4</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>com.ebay.raptor.tools.DependencyValidator</mainClass>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<id>make-assembly</id> <!-- this is used for inheritance merges -->
<phase>package</phase> <!-- bind to the packaging phase -->
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
相关推荐
今天安装了Ubuntu 13.10系统,作为一个Java程序猿, 第一件事当然是把eclipse装上。 在我的机器上, 将eclipse解压在/deve/eclipse目录: 在这个目录下, 执行一下命令启动eclipse: ./eclipse 但是当eclipse...
在Eclipse中使用Jocky也非常简单,任何一个Java工程,选中工程通过右键菜单,都可以出现Jocky的快捷菜单: 在Eclipse中的右键菜单> 在Eclipse中的属性设置> 事实上,在Eclipse中使用Jocky时,...
在Eclipse中使用Jocky也非常简单,任何一个Java工程,选中工程通过右键菜单,都可以出现Jocky的快捷菜单: 在Eclipse中的右键菜单> 在Eclipse中的属性设置> 事实上,在Eclipse中使用Jocky时,Jocky也是...
在Eclipse中使用Jocky也非常简单,任何一个Java工程,选中工程通过右键菜单,都可以出现Jocky的快捷菜单: 在Eclipse中的右键菜单> 在Eclipse中的属性设置> 事实上,在Eclipse中使用Jocky时,Jocky也是...
一、申请短信通道,国内的短信通道很多,不同的通道速度不一样,我们在申请时要一个基本原则就是速度要快,基本上要发送即接收了,客户不可能等的。国内调查发现,客户等网页打开的时间是最长不超过5秒,短信接收的...
36.老师讲要会看异常,后台框架里的异常,一般是后一个异常导致了前一个异常,所以看异常要最先看最后一个causeby:往往最后这个能解决99%问题。还有1%是xml文件写错了。 37. 252集测试2,我的roleOperator无法显示...
下载了jitsi android的版本代码后,直接导入eclipse可能报错,需要先使用命令生成一下libs库。 官方网站的步骤:https://github.com/jitsi/jitsi-android 针对上面的步骤可能会遇到如下的错误: 1.当运行ant ...
通过 activityCreator.py --out myproject your.package.name.ActivityName 命令可以生成一个project ,生成project下面有个bulid.xml 文件,那个东西就可以帮你打包生成了。 来看下ant是怎么做的。 ...
运行android程序控制台输出 [2012-07-18 16:18:26 - ] The connection to adb is down, and a severe error has occured. [2012-07-18 16:18:26 - ] You must restart adb and Eclipse. [2012-07-18 16:18:...