【问题标题】:Cannot determine current directory无法确定当前目录
【发布时间】:2012-06-14 17:09:04
【问题描述】:

我正在尝试运行在 Netbeans 中成功创建的 .jar 文件,但收到以下错误:

VM java.lang.Error 初始化期间发生错误: 属性初始化:无法确定当前工作目录。在 java.lang.System.initProperties(本机方法)在 java.lang.System.initializeSystemClass(System.java:1070)

我输入的运行 .jar 的命令是

java -jar "/path to the dist forlder/EOPPrototype.jar"

我的类路径如下:

CLASSPATH=/opt/netbeans-7.1.2/ide/modules/ext/mysql-connector-java-5.1.13-     bin.jar:/h/USERS/local/pagola/NetBeansProjects/mylib/dist/mylib.jar:/h/USERS/local/pagola/NetBeansProjects/EOPPrototype/build/classes:.

我错过了什么?

【问题讨论】:

    标签: java jvm


    【解决方案1】:

    当我试图在一个目录中调用 java -version 时,我看到了同样的错误,我已经从另一个终端会话中删除了该目录。当然在那种情况下java could not determine the current working directory,只是因为它不存在。

    【讨论】:

    • 当我在 maven 目标目录中发出以下命令时发生了这种情况: 存在,然后我进行了清理并构建(全新安装),然后发出了相同的命令。即使路径仍然有效,我首先发出命令的特定目录条目不存在(OS X)执行 cd ../target 修复了我的问题
    • ..aaand 如何解决这个问题?
    • 高手! :) 非常感谢! :)
    • 我从/Applications/NetBeans-8.1beta/glassfish-4.1/glassfish/domains/domain1/generated 调用java -v 时遇到了同样的问题。该“生成”文件夹是从 NetBeans 重新生成的缓存文件夹。当我 cd-ed 然后回到相同的 /generated 时,问题没有发生,java -version 工作给了java version "1.8.0_60"
    • 直接退出目录再进入
    【解决方案2】:

    解决方案:cd 到另一个目录并再次运行该命令,这对我有用。

    请看这里的解释:https://bugs.openjdk.java.net/browse/JDK-8186434

    【讨论】:

    • 当您所在的文件夹被删除时会发生这种情况
    【解决方案3】:

    在 Fedora 21 中,我尝试在卸载后调用“java -version”,但它给出了上述错误。关闭所有终端并再次打开它们并尝试。

    应该可以。

    【讨论】:

    • 对我来说也一样,使用 ubuntu
    • 我也一样,使用 LinuxMint 18.3。
    【解决方案4】:

    也许你没有在你的工作站上正确配置 java 环境

    以下配置是我在我的mac中所做的

    vi ~/.bash_profile
    

    并在其中添加它们

    JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_40.jdk/Contents/Home
    PATH=$JAVA_HOME/bin:$PATH:.
    CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:.
    export JAVA_HOME
    export PATH
    export CLASSPATH
    

    替换

    JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_40.jdk/Contents/Home
    

    使用您的 jdk 版本 然后运行

    source ~/.bash_profile
    

    立即使用这些配置 然后你可以检查

    java -version
    

    【讨论】:

    • 酷。非常感谢!
    【解决方案5】:

    我收到了同样的错误消息,但我不确定这是否与我不使用 Netbeans 的原因相同。我使用我的终端并使用ant 进行编译。

    我cd'd 到一个目录运行javafile.class 文件。我要运行的文件是更大包的一部分。包的目录结构看起来像这样:a/b/c/javafile.class。 a、b 和 c 目录都是较大包的一部分。

    为了运行我的javafile.class,我将cd 输入a 并从那里运行文件:java b/c/javafile。在我做了一些更改并使用我的ant 脚本重新编译后,我所在的目录已被ant 删除并重新制作。所以,当我再次运行javafile.class 时,我得到了你得到的错误。

    我通过cd从ant 删除和重新制作的目录中解决了我的问题,然后再次运行我的javafile.class。

    【讨论】:

    • 谢谢。从较高的目录导航到较低的目录,然后重新运行我的命令也为我解决了这个问题。
    【解决方案6】:

    我在 Mac OS X 上遇到了这个错误,这是一个真正的错误,因为目录已经消失。我执行命令时所在的目录是<PROJECT DIR>\target。

    问题是我在运行mvn clean install 的另一个终端中打开了两个终端,PROJECT DIR 中的目标目录被删除并重新创建。

    执行 Java 命令的旧终端不在有效目录中。

    文件描述符无效,因为该目录已被 Maven 删除。

    当我移回父目录并改回target 目录时,java 命令开始按预期正常工作。

    【讨论】:

      【解决方案7】:

      我遇到了同样的错误 -

      虚拟机初始化过程中发生错误

      java.lang.Error:属性初始化:无法确定当前工作目录。

      只需执行“java -version”(您会认为它不需要调出 虚拟机只是为了回答一个简单的问题,比如“你是什么版本?”)

      密码的目录路径的更高元素(斜线之间的元素) 里面有空格。当我创建当前工作目录时,来自 / 向下没有任何空格,“java -version”命令得到了正确的响应。

      我的结论是,当他们使用空格时,他们没有考虑目录 对其进行编程。但那是 1.7 版。我现在已经加载了版本 8 所以希望 已经更正了。

      【讨论】:

      • 我从/Applications/NetBeans-8.1beta/glassfish-4.1/glassfish/domains/domain1/generated 调用java -v 时遇到了同样的问题(有点和连字符,不是空格,但它们也可能导致问题[否,请参阅编辑])。然后我得到了 OK java version "1.8.0_60" (似乎仍然是 Java8 的问题。编辑:这是因为那个“生成”文件夹是从 NetBeans 重新生成的缓存文件夹。当我 cd-ed 然后回到相同的 /generated 它没有发生了。asmaier(下)是对的。
      【解决方案8】:

      在 CentOS、rhel、SL 还是 SLC 下?在 debian/ubuntu 下不是问题。

      我发现您需要注销您正在使用的 shell 并重新登录。最初没有为当前 shell 正确设置环境。登录后我看到: java -version 将工作。

      还要确保 /etc/alternatives/java 实际上指向一些合理的东西,例如:

      ls -lisa /etc/alternatives/java
      72645 0 lrwxrwxrwx. 1 root root 46 May 27 11:29 /etc/alternatives/java -> /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/java
      

      【讨论】:

        【解决方案9】:

        如果您从只读目录发出“java -version”或其他 java 命令,您可能会收到此错误。例如在 centos 上使用 openjdk 8(作为非 root 用户):

        cd /usr/bin
        java -version
        

        虚拟机初始化过程中发生错误 java.lang.Error:属性初始化:无法确定当前工作目录。

        【讨论】:

          【解决方案10】:

          刚才,我遇到了同样的错误。因为我使用java来setreuid/setregid到apache:apache,当我改回root:root时,我在uid之前更改了gid,真正的结果是root:apache。一切都出错了,例如错误说“java.lang.Error:属性初始化:无法确定当前工作目录。”

          你可以检查一下。

          【讨论】:

            【解决方案11】:

            当我从 Eclipse 启动 tomcat 时,我的 mac 出现了这个错误。设置JAVA_HOME后重启eclipse,错误修复。

            【讨论】:

              猜你喜欢
              • 2011-04-12
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2013-12-11
              • 1970-01-01
              • 2019-01-13
              相关资源
              最近更新 更多