使用-cp选项执行时,Java无法找到类文件,如下所示
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
请你告诉我可能是失败的原因是Step-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
答案 0 :(得分:2)
尝试使用:
java -cp ~/softwares/pig-0.12.0/pig-0.12.0.jar;. PR
问题是您还需要加载已编译的PR类。因此,您的类路径需要具有依赖项和编译输出。将当前目录添加到类路径中。