在maven项目(Intellij )中,我获得了java.lang.ClassNotFoundException,因为我试图创建一个类的对象,它需要一些外部库。
public HelloWorldController() {
service = new FileService();
products.add(new Product("hello"));
products.add(new Product("world"));
}没有service = new FileService();,一切都很完美,下面是FileService类:
public class FileService {
public FileService()
{
irodsAccount = new IRODSAccount("192.168.6.128",1247,"rods","rods","","tempZone","demoResc");
try {
irodsFileSystem = new IRODSFileSystem();
}
catch (JargonException ex) {
}
try {
this.dataTransferOps = irodsFileSystem.getIRODSAccessObjectFactory().getDataTransferOperations(irodsAccount);
}
catch (JargonException ex) {
}
}
private String targetIrodsFileAbsolutePath;
private IRODSAccount irodsAccount;
private IRODSFileSystem irodsFileSystem;
private TransferControlBlock transferControlBlock;
private DataTransferOperations dataTransferOps = null;
public IRODSFile getIRODSFileForPath(String irodsFilePath) throws Exception {
if (irodsFilePath == null || irodsFilePath.isEmpty()) {
throw new Exception("null or empty irodsFilePath");
}
return irodsFileSystem.getIRODSFileFactory(irodsAccount).instanceIRODSFile(irodsFilePath);
}
}IRODSAccount、IRODSFileSystem和其他类似的类是从外部jars获得的,我将这些jars连接到项目(添加了模块),但是在运行我的项目之后,我有如下所示:
Caused by: java.lang.ClassNotFoundException: org.irods.jargon.core.exception.JargonException
at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:50)
at org.codehaus.plexus.classworlds.realm.ClassRealm.unsynchronizedLoadClass(ClassRealm.java:259)
at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:235)
at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:227)
at org.mortbay.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:401)
at org.mortbay.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:363)
... 62 more在使用相同jars的maven项目中,一切都很好(我没有得到java.lang.ClassNotFoundException)。将依赖项添加到pom.xml文件并不能解决我的问题,我从以前的项目中复制了以下内容:
<dependency>
<groupId>org.irods.jargon</groupId>
<artifactId>jargon-httpstream</artifactId>
<version>${jargon.version}</version>
</dependency>但不幸的是,在莱恩,<version>${jargon.version}</version> jargon.version没有被认为是正确的陈述。
发布于 2014-07-29 08:24:01
<version>${jargon.version}</version>中添加版本的右侧
<properties>
<jargon.version>2.4.1-SNAPSHOT<jargon.version>
</properties>在您的pom文件或直接
<version>2.4.1-SNAPSHOT</version> 发布于 2014-07-29 08:21:30
因为根据关于exec的Maven文档:exec目标,您需要在配置中包含<\classpath>节,以便包含整个项目模块类路径。
但是,似乎由于某种原因,Maven正在使用完全(并正确)配置的类路径运行程序。
为了弄清问题的根源,我使用-X命令行参数运行Maven,并仔细扫描调试输出,直到找到它运行的确切命令为止。然后,我尝试从同一个目录运行它,确保我使用的是相同的Java安装,并查看它是否工作。
https://stackoverflow.com/questions/25010812
复制相似问题