java.lang.ClassNotFoundException maven
在maven project Intellij Idea中,我得到了java.lang.ClassNotFoundException,因为我试图创建一个需要一些外部库的类的对象java.lang.ClassNotFoundException maven,java,windows,maven,intellij-idea,Java,Windows,Maven,Intellij Idea,在maven project Intellij Idea中,我得到了java.lang.ClassNotFoundException,因为我试图创建一个需要一些外部库的类的对象 public HelloWorldController() { service = new FileService(); products.add(new Product("hello")); products.add(new Product("world")); } 没有服务,一切都能完美工作
public HelloWorldController() {
service = new FileService();
products.add(new Product("hello"));
products.add(new Product("world"));
}
没有服务,一切都能完美工作=新文件服务;,下面是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和其他类似的类都是从外部JAR获得的,我将这些JAR连接到项目中添加的模块,但在运行我的项目后,我得到了如下内容:
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
在maven项目中,一切都很好,但使用的JAR不同,我没有得到java.lang.ClassNotFoundException。
向pom.xml文件添加依赖项并没有解决我的问题,我从以前的项目中复制了以下内容:
<dependency>
<groupId>org.irods.jargon</groupId>
<artifactId>jargon-httpstream</artifactId>
<version>${jargon.version}</version>
</dependency>
但是,不幸的是,在lane${jargon.version}jargon.version没有被识别为正确的语句。因为根据目标,您需要在配置中包含该节,以便包含整个项目模块类路径
然而,似乎出于某种原因,Maven正在使用完全正确配置的类路径运行程序
为了弄清问题的根源,我使用-X命令行参数运行Maven,并仔细地扫描调试输出,直到找到它运行的确切命令。然后,我会尝试从同一个目录运行它,确保使用相同的Java安装,看看它是否有效
<version>${jargon.version}</version>
在中添加正确的版本
<properties>
<jargon.version>2.4.1-SNAPSHOT<jargon.version>
</properties>
在pom文件中或直接
<version>2.4.1-SNAPSHOT</version>
如果你去掉标签怎么办?Maven将采用默认版本。或者声明一个属性,该属性的名称和正确的版本号为value您说您从以前的项目复制了依赖项。您知道行话httpstream依赖项的jar所在的位置吗?Maven不会神奇地找到这个jar,除非它托管在Central上,我不相信它是这样。您在属性部分设置了${jargon.version}吗?org.irods行话3.3.3-beta1@Pablo,不幸的是,该版本是必需的,我正在试图找到一个正确的版本号。我将版本更改为3.3.5-SNAPSHOT,它成功了,这是一个解决方案