当-cp选项执行无法加载类(Could not load class when executed w

2019-10-19 21:10发布

Java的无法找到类文件时使用-cp选项,如下执行

javac -cp ~/softwares/pig-0.12.0/pig-0.12.0.jar PR.java

编译成功。 然而,当我运行上面生成的类我收到错误

java -cp ~/softwares/pig-0.12.0/pig-0.12.0.jar PR
 Error: Could not find or load main class PR

如果我删除我得到以下错误-cp预计

 java PR
 Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/pig/PigServer
    at PR.runPigScript(PR.java:9)
    at PR.main(PR.java:21)
Caused by: java.lang.ClassNotFoundException: org.apache.pig.PigServer
    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:423)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
    ... 2 more

能否请你告诉我什么可能是失败的原因是步骤2(无法找到或加载主类)。 下面是PR.java的代码

  import org.apache.pig.ExecType;
  import org.apache.pig.PigServer;
  import org.apache.pig.backend.executionengine.ExecException;

 public class PR {

    public void runPigScript(){
            try {
                    PigServer  pigServer = new PigServer(ExecType.LOCAL);
                    pigServer.registerScript("RP.pig");
            } catch (Exception ex) {
                    // TODO Auto-generated catch block
                    ex.printStackTrace();
            }
    }

  public static void main(String[] args){
      PR pr = new PR();
     pr.runPigScript();
  }

}

从https://wiki.apache.org/pig/EmbeddedPig

要运行程序,你需要使用下面的命令先编译:

   javac -cp <path>pig.jar WordCount.java

如果编译成功后,你就可以运行你的程序:

   java -cp <path>pig.jar WordCount

Answer 1:

尝试使用:

java -cp ~/softwares/pig-0.12.0/pig-0.12.0.jar;. PR

问题是,你需要加载你的编译PR类为好。 所以,你的类路径中需要有两个依赖和编译的输出。 当前目录添加到类路径。



文章来源: Could not load class when executed with -cp option