我的java工作正常,而且环境变量也为javajdk1.8.0\u261设置,但是当我运行 pig -version
它的表演 Error: Could not find or load main class C:\java\lib\tools.jar
.
我还检查了lib中tools.jar的java文件夹,它就在那里。
另外,apache pig配置在pig.cmd中也是正确的
我的hadoop和mapreduce都工作正常,没有错误。
我的java工作正常,而且环境变量也为javajdk1.8.0\u261设置,但是当我运行 pig -version
它的表演 Error: Could not find or load main class C:\java\lib\tools.jar
.
我还检查了lib中tools.jar的java文件夹,它就在那里。
另外,apache pig配置在pig.cmd中也是正确的
我的hadoop和mapreduce都工作正常,没有错误。
1条答案
按热度按时间xa9qqrwz1#
你的安装被破坏了,或者你弄乱了一个shell脚本。这个错误不可能真的意味着什么。
调用时
java.exe
,您可以通过java -jar C:\foo.jar
,或类路径+完全限定类名:java -cp C:\foo.jar;C:\bar.jar com.foo.fullyqualified.ClassName
.那个错误意味着你通过了考试
C:\java\lib\tools.jar
在那个类名的位置。将无法在任何系统上运行,无论安装情况如何:C:\java\lib\tools.jar
是文件路径,不是完全限定的类名。那个tools.jar
就好像我告诉过你:“我在你的书架上找了一本书名为《油漆罐》,但我找不到”,你说:“这很奇怪,因为(指着车库架子上的油漆罐),这里就有油漆罐。”。java并没有把它当作一条可以查找的路径;它将其视为要在类路径上搜索的类名。请注意,这个琐碎的调用:
产生您所观察到的确切错误,这是java的正确行为(因为正确的运行方式是
java -jar C:\lib\tools.jar
或者更有可能java -cp C:\lib\tools.jar;. com.foo.YourApp
. 解决办法是。。不要像这样错误地调用java。原因
可能pig.cmd坏了。粘贴的图像不包括对java的实际调用。
也许java坏了。做
java.exe
有工作吗?制作一些测试文件,编译,运行。这样行吗?也许脚本正试图通过让windows来启动jar(所以,双击它,或者在脚本中,
start foo.jar
,然后将检查hklm注册表部分.jar
,然后在那里检查如何启动它,如果您手动编辑了它,这将破坏一些东西:然后您可能会将它设置为例如。java %1
那是坏的(必须是坏的)java -jar %1
).pig -version
不是调用pig.cmd,而是调用其他东西。pig.cmd中的某些内容启动另一个脚本。然后那个脚本就坏了,或者不是pig.cmd认为的脚本,等等。