【问题标题】:Getting class not found for org.json.simple.parser.ParseException even through dependecy is there in pom.xml?即使 pom.xml 中存在依赖项,也找不到 org.json.simple.parser.ParseException 的类?
【发布时间】:2016-04-01 04:48:41
【问题描述】:

这是我的 pom.xml

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>

<dependency>
   <groupId>org.apache.hadoop</groupId>
   <artifactId>hadoop-core</artifactId>
   <version>1.2.0</version>
   <scope>provided</scope>
</dependency>

<dependency>
    <groupId>com.googlecode.json-simple</groupId>
    <artifactId>json-simple</artifactId>
    <version>1.1.1</version>
</dependency>
  </dependencies>

我在项目中添加了 com.googlecode.json-simple 作为依赖项,它在 eclipse 构建中运行良好,但是当我在 hadoop 中运行 jar 时,我得到了

Error: java.lang.ClassNotFoundException: org.json.simple.parser.ParseException
        at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:270)
        at org.apache.hadoop.conf.Configuration.getClassByNameOrNull(Configuration.java:2134)
        at org.apache.hadoop.conf.Configuration.getClassByName(Configuration.java:2099)
        at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:2193)
        at org.apache.hadoop.mapreduce.task.JobContextImpl.getMapperClass(JobContextImpl.java:186)
        at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:745)
        at org.apache.hadoop.mapred.MapTask.run(MapTask.java:341)
        at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:164)
        at java.security.AccessController.doPrivileged(Native Method)
        at javax.security.auth.Subject.doAs(Subject.java:415)
        at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1657)
        at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:158)

有什么想法吗?

【问题讨论】:

标签: java json xml maven hadoop


【解决方案1】:

我认为问题可能是由于范围。

请尝试将范围更改为“编译”或“测试”。我认为您正在使用它进行测试。

<dependency>
    <groupId>com.googlecode.json-simple</groupId>
    <artifactId>json-simple</artifactId>
    <version>1.1</version>
    <scope>provided</scope>
</dependency>

【讨论】:

  • 我对maven不是很精通。你能告诉我在哪里设置吗?
  • compile 可能会有所帮助。
  • with scope=test, eclipse 不能编译?
  • 你的意思是 test 你试过 compile for com.googlecode.json-simple
  • 是的测试它不编译,编译,它编译但给我classNotFound?
猜你喜欢
  • 2017-03-29
  • 2015-02-28
  • 1970-01-01
  • 1970-01-01
  • 2021-07-14
  • 2020-08-08
  • 2016-11-30
  • 2014-09-07
  • 1970-01-01
相关资源
最近更新 更多