【问题标题】:Java virtual machine launch issueJava虚拟机启动问题
【发布时间】:2011-07-21 21:54:39
【问题描述】:

大家好,

我遇到了一个问题,突然间,Java 完全停止了工作。我开始收到“无法创建虚拟机”之类的错误。内存没有问题(它有 3GB RAM)并且在这个系统中运行了 6 个月以上没有任何问题。

这里有一些奇怪的行为 -

  1. 当我启动 Eclipse 时,我看到带有错误消息的 Java 虚拟机对话框
    “找不到主类 org.eclipse......support.legacysystemproperties”

  2. Eclipse 能够启动(出现上述错误),但在运行程序时,我在对话框中收到类似“无法创建 Java 虚拟机”的错误,然后在该对话框上单击“确定”后,我看到类似“无法识别的选项 -dfile.encoding=cp1252

  3. 之类的错误
  4. 我使用文本编辑器,编写了一个类 Test.java(没有任何包),编译它(Edit #1:javac Test.java)。但是当我执行程序时(Edit #1:java Test),我收到以下错误 - 线程“主”java.lang.NoClassDefFoundError 中的异常:测试(错误名称:测试)。

编辑#1: 注意:编译后的文件Test.class在目录中成功创建。我确实重新检查了路径和类路径环境变量。一切似乎都是正确的。

请注意,影响 Java 的案例似乎存在一些问题。

我确实卸载了 Java(所有版本),重新安装了,但没有任何帮助。此外,我确实运行了 CCleaner 来清理注册表,即 Malwarebytes 的反恶意软件,但到目前为止没有任何帮助。

感谢有人可以帮助我解决问题。

我对此进行了谷歌搜索,发现有些人遇到了类似的问题,但除了一些建议重新安装 Windows 操作系统本身之外,他们都没有找到解决方案,我想避免这种情况。我做了系统还原,但其他一些失败了 原因。

请注意,我使用 Java 已经超过 10 年了。这是我第一次遇到这样的问题。这与 Windows 注册表或其他一些系统配置有关,但我无法找出确切的问题。

无论如何都在等待一些好的建议。

【问题讨论】:

    标签: java jvm


    【解决方案1】:

    编辑:好的,看起来 Java 可执行文件正在获取小写的命令行参数。

    第 1 步:验证

    您可以通过创建一个仅转储其参数的小写名称的类来仔细检查这是否会影响 所有 命令行参数:

    public class test {
        public static void main(String[] args) {
            for (String arg : args) {
                System.out.println(arg);
            }
        }
    }
    

    使用各种输入编译并运行它。

    第 2 步:检查范围

    假设第 1 步确认了问题,如果您安装了 .NET,您可以查看它是否也会影响该问题。创建文件Test.cs:

    using System;
    
    class Test
    {
        static void Main(string[] args)
        {
            foreach (string arg in args)
            {
                Console.WriteLine(arg);
            }
        }
    }
    

    在 .NET 框架目录中找到 csc(例如,在 c:\Windows\Microsoft.NET\Framework\v4.0.30319 中,对于 .NET 4)使用“csc Test.cs”编译它。

    像这样运行它:

    Test foo BAR Baz
    

    看看会发生什么

    第 3 步:如果第 2 步表明问题仅限于 java.exe:

    • 检查您的路径,并找出您实际从哪里运行 java.exe
    • 尝试显式从您的 JRE 或 JDK 目录运行 java.exe

    【讨论】:

    • 感谢您的回复。我猜你错过了我的观点。我非常了解如何执行 Java 程序(我是一名 10 年以上的 Java 程序员!)。如果您看到,选项和文件名变得不区分大小写。我的意思是,而不是-Dfile,它在那里被视为-dfile,并给出一个错误。同样,即使我输入java Test,它也会被解释为java test。因此,它看起来不像 Eclipse 或 Java 的问题。它与 Windows 系统属性(可能是注册表)有关,这些属性通过使 Java 无法工作而在那里被破坏。希望你有我的问题。
    • @Chandra:如果您真的告诉我们您是如何尝试执行代码的...显示命令行本身会更清楚。那将节省时间。听起来它要么是外壳中的东西,要么可能是 java.exe 本身。我建议你用另一种语言编写一个应用程序,它只显示传递给它的命令行参数——这将识别它是否是特定于 Java 的。您可能还想仔细检查您的路径 - 找出确切运行 Java 时正在执行的内容。尝试在 JRE 目录中显式运行 Java。
    • @Jon,对此感到抱歉。我已经添加了这些细节。
    • @Chandra:好的,现在我已经替换了我的答案,因为它稍微清楚了发生了什么。
    • @Jon,第 1 步 - 工作正常,因为类名是小写的(如果我更改大小写,则不起作用)。第 2 步 - 我没有安装 .NET,因此无法对其进行测试。第 3 步 - 尝试了所有这些选项,但没有成功。
    猜你喜欢
    • 1970-01-01
    • 2018-01-18
    • 1970-01-01
    • 2011-04-24
    • 1970-01-01
    • 2022-07-09
    • 1970-01-01
    • 2013-08-29
    相关资源
    最近更新 更多