检查apache pig版本时出现的错误“error:找不到或加载主类c:\java\lib\tools.jar”

wqsoz72f  于 2021-05-27  发布在  Hadoop
关注(0)|答案(1)|浏览(479)

我的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都工作正常,没有错误。

xa9qqrwz

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.exe C:\lib\tools.jar

产生您所观察到的确切错误,这是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认为的脚本,等等。

相关问题