【问题标题】:Could not find or load default class找不到或加载默认类
【发布时间】:2016-12-23 08:15:23
【问题描述】:

我尝试使用 Runtime 但遇到了一些问题。我想使用Runtime.exec("java -cp")。一个是jar文件,另一个是class文件。类文件是指 jar 文件,但不包括在内。下面是我的代码

  Runtime rt = Runtime.getRuntime();
    Process proc = null;

    System.out.println(Run.class.getResource("").getPath());
    try {
        proc = rt.exec("java -cp c:/data/hh.jar; com/list/shark/Whale");
    } catch (IOException e1) {
        e1.printStackTrace();
    }

结果是“找不到或加载默认类”。我真的很想知道执行运行时的位置在哪里以及这个问题的唯一性。

PS 在本地 cmd 中,命令正在运行。

【问题讨论】:

  • 不要对未引用的文本使用引用格式。不要发布文字图片:发布文字。不清楚你在问什么。

标签: java runtime.exec


【解决方案1】:

你使用的命令是错误的。

从命令行运行 jar:

java -jar <jar-file-name>.jar

如果您没有在 jar 中创建清单文件,java -jar 将不起作用。 然后您需要在命令中明确指定 FQP(完全限定的类路径):

java -cp <fully.qualified.class.path>

有一个good answer 介绍如何创建和运行您可能想要查看的 jar

【讨论】:

  • yes 命令在 cmd 中有效,但在 java 运行时无效 我真的知道
  • 抛出的确切异常是什么?
  • @ho9 我认为您需要具有管理员访问权限。尝试将项目编译为 jar 并授予它管理员访问权限,看看是否可行。
  • @ho9 该命令根本不起作用。您需要将斜线更改为点。
【解决方案2】:

我为遇到同样问题的人发布答案

只是做

 RunTime.exec("cmd /c dir");

用于查找当前执行路径

并从 exec(command) 更改为 exec(command,env,file)。

创建文件并输入执行当前路径

 File file = new File("c:/Test/");

 RunTime.exec("java -cp c:/data/hh.jar; com.list.shark.Whale",null,file);

这是执行引用其他jar文件的类文件成功。

【讨论】:

  • cmd /c dir 和它有什么关系?它所做的只是告诉你System.getProperty("user.dir") 的值,你不需要为此执行任何操作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-13
  • 2016-01-16
  • 2021-06-06
  • 2017-02-26
相关资源
最近更新 更多