72

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

VM java.lang.Error 初始化期间发生错误:属性初始化:无法确定当前工作目录。在 java.lang.System.initProperties(Native Method) 在 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:.

我错过了什么?

4

11 回答 11

202

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

于 2013-01-25T10:44:29.360 回答
32

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

请参阅此处的说明:https ://bugs.openjdk.java.net/browse/JDK-8186434

于 2018-03-01T04:22:08.210 回答
11

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

应该管用。

于 2015-03-31T14:08:21.180 回答
4

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

cd要到一个目录来运行一个javafile.class文件。我要运行的文件是更大包的一部分。包的目录结构如下所示:a/b/c/javafile.class. 、a和目录都是较大包的一部分bc

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

cd我通过退出已删除和重新制作的目录ant然后再​​次运行我的目录来解决我的问题javafile.class

于 2012-06-29T12:06:34.770 回答
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
于 2017-07-05T05:54:00.637 回答
3

我得到了同样的错误 -

初始化虚拟机时出错

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

只需执行“java -version”(您会认为不需要启动虚拟机来回答诸如“您是什么版本?”之类的简单问题)

pwd 目录路径的较高元素(斜杠之间的元素)中有空格。当我创建一个从/向下没有任何空格的当前工作目录时,“java -version”命令得到了正确的响应。

我的结论是他们在编程时没有考虑带有空格的目录。但那是 1.7 版。我现在已经加载了版本 8,所以希望它已经得到纠正。

于 2014-08-14T23:00:52.997 回答
3

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

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

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

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

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

于 2016-09-20T16:52:36.540 回答
2

在 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
于 2016-05-27T10:41:03.047 回答
0

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

你可以检查一下。

于 2013-08-20T06:15:05.320 回答
0

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

于 2017-07-06T07:05:45.010 回答
-1

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

cd /usr/bin
java -version

VM java.lang.Error 初始化期间发生错误:属性初始化:无法确定当前工作目录。

于 2016-11-30T05:17:13.687 回答