无法确定当前目录

81

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

VM初始化时出错:java.lang.Error: 初始化属性:无法确定当前工作目录。位于 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:.

我缺少了什么?

12个回答

215

当我尝试在一个我已经从另一个终端会话中删除的目录中调用java -version时,我看到了相同的错误。当然,在这种情况下,由于目录不存在,Java 无法确定当前工作目录


9
我的经历是,在Maven目标文件夹中执行一个命令时,该目录存在。然后我执行了清理和构建(clean install),再次执行相同的命令。尽管路径仍然有效,但我最初执行命令的特定目录条目不见了(在OS X上)。通过执行cd ../target命令,问题得以解决。 - Steven Magana-Zook
3
怎么修复这个问题? - basickarl
1
非常娴熟!:) 非常感谢!:) - Jovan Perovic
1
只需退出并重新进入目录即可。 - deldev
1
多么奇怪的问题。今晚发生在我身上,就是这个问题。我在终端中进入了 <project>/target/classes 目录,运行了 mvn clean compile 命令,然后尝试从第一个终端重新运行 java 命令。我猜测 Maven 命令删除并重新创建目录会影响旧终端。使用 cd 命令返回项目根目录,然后再进入 classes 目录解决了我的问题。 - Matt Welke
显示剩余2条评论

38

4
当你所在的文件夹被删除时,这种情况就会发生。 - Evgeny Goldin

13
在 Fedora 21 中,我尝试在卸载后调用 "java -version" 命令,但出现了上述错误。关闭所有终端并重新打开,再次尝试即可。
应该可以正常工作。

和我一样,使用的是Ubuntu。 - deFreitas
我也一样,在LinuxMint 18.3上出现了这个问题。 - Nanang F. Rozi
我在WSL中使用Debian也是一样的。 - andymel

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

酷。非常感谢! - Rinto George

4

我遇到了同样的错误信息,但我不确定是否是因为我没有使用Netbeans。我使用终端并使用ant进行编译。

我使用cd命令进入目录来运行一个javafile.class文件。我想要运行的文件是较大包中的一部分。该包的目录结构类似于这样:a/b/c/javafile.classabc目录都是更大的包的一部分。

为了运行我的javafile.class,我先cd进入a目录,然后从那里运行文件:java b/c/javafile。在我使用ant脚本重新编译后,我所在的目录已被ant删除并重新创建。因此,当我再次运行javafile.class时,我会得到你遇到的错误。

我通过cd到未被ant删除并重新创建的目录中,然后再次运行我的javafile.class来解决了我的问题。


2
谢谢。我也遇到了同样的问题,通过从高级目录导航到较低级目录,然后重新运行我的命令,问题得到了解决。 - StackExchange What The Heck

3

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

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

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

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

当我回到父目录并再次切换到target目录时,java命令开始按照预期正确地工作。


3

我遇到了相同的错误 -

初始化VM时发生错误

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

仅运行“java -version”命令即可出现此错误(您可能认为它不需要启动虚拟机来回答“您是哪个版本?”这样的简单问题)。

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

我得出结论,他们在编写程序时没有考虑到具有空格的目录。但那是1.7版本。我现在加载了版本8,因此希望已经进行了更正。


我在从/Applications/NetBeans-8.1beta/glassfish-4.1/glassfish/domains/domain1/generated调用java -v时遇到了同样的问题(有点和连字符,而不是空格,但它们也可能会引起问题[否,参见EDIT])。然后我得到了OK java version "1.8.0_60"(似乎仍然存在Java8的问题。编辑:这是因为'generated'文件夹是NetBeans重新生成的缓存文件夹。当我cd-ed离开然后回到相同的/generated时,它没有发生。asmaier(下面)是正确的。 - Webel IT Australia - upvoter

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

0

我在我的Mac上启动Eclipse时遇到了这个错误。设置了JAVA_HOME并重新启动Eclipse后,错误得到了解决。


0

首先,您需要安装 default-jdk! 使用以下命令进行安装:sudo apt install default-jdk 请注意,只有版本11无法正确设置所有环境变量。 因此,请使用以下命令代替:sudo apt install openjdk-11-jdk


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接