当使用-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
你能告诉我什么可能是失败的原因是第二步(找不到或加载主类)。下面是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
1条答案
按热度按时间yzckvree1#
尝试使用:
问题是您还需要加载已编译的pr类。因此,类路径需要同时具有依赖项和编译输出。将当前目录添加到类路径。