java.lang.ClassNotFoundException maven

时间:2014-07-29 08:08:02

标签: java windows maven intellij-idea

在maven项目中(Intellij Idea)我有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);
    }
}

IRODSAccountIRODSFileSystem和其他类似的类来自外部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项目中(我没有得到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未被识别为正确的陈述。

2 个答案:

答案 0 :(得分:0)

因为根据Maven documentation on the exec:exec目标,您需要拥有&lt; \ classpath&gt;您的配置中的节,以包括整个项目模块类路径。

但是,由于某种原因,似乎Maven正在使用完全(且正确)配置的类路径运行程序。

为了解决问题的根源,我将使用-X命令行参数运行Maven并仔细扫描调试输出,直到找到它运行的确切命令。然后我尝试从同一目录运行它,确保我使用相同的Java安装并查看它是否有效。

答案 1 :(得分:0)

 <version>${jargon.version}</version>

中添加正确的版本
   <properties>
    <jargon.version>2.4.1-SNAPSHOT<jargon.version>
    </properties>

在您的pom文件中或直接

<version>2.4.1-SNAPSHOT</version>