无法确定当前目录

问题描述 投票:54回答:11

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

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

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


0
投票

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

qazxswpoi

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


0
投票

当我从日食中启动tomcat时,我的mac中出现了这个错误。设置JAVA_HOME并重新启动eclipse后,错误得到修复。


12
投票

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

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


6
投票

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

应该管用。


3
投票

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

cd去一个目录运行javafile.class文件。我想要运行的文件是更大的包的一部分。包的目录结构如下所示:a/b/c/javafile.classabc目录都是更大包装的一部分。

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

我通过cding解决了ant删除并由javafile.class重新制作的目录,然后再次运行我的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


3
投票

我得到了同样的错误 -

VM初始化期间发生错误

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

只需要做'java -version'(你会认为不需要启动虚拟机只是为了回答一个简单的问题,比如'你是什么版本的?')

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

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


2
投票

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

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

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

<PROJECT DIR>\target

2
投票

我在Mac OS X上遇到此错误,这是一个真正的错误,因为该目录已经消失。我执行命令时的目录是mvn clean install

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

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

由于Maven删除了目录,因此文件描述符无效。

当我移回父目录并更改回java目录时,vi ~/.bash_profile 命令开始按预期正常工作。


2
投票

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

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

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

更换

source ~/.bash_profile

用你的jdk版本,然后运行

java -version

要立即使用这些配置,您可以检查

cd /usr/bin
java -version

0
投票

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

你可以检查一下。

© www.soinside.com 2019 - 2024. All rights reserved.