当客户端运行时,我的服务器端显示 nullPointerException java

my server-side shows nullPointerException when client-side runs java

我有一个带有 Linux Mint OS 的服务器,它有一个读取一些环境变量的服务器端 Maven 项目。

环境变量在/etc/profile.d/my_env_vars.sh中声明为:

export MY_VAR=/opt/my_app 
export PATH=$MY_VAR:$PATH

我的服务器端有一个功能,当我从 eclipse(安装在我的服务器中)运行 它工作正常,没有错误。

public File convert( byte [] image) throws IOException {
    String filePath = System.getenv("MY_VAR");
    File imageFile = File.createTempFile("TEMP", "tmp", new File(filePath)); 
...
    return imagenFile;
}

我的客户端也是一个maven项目。它向上面的函数发送一个 byte[] 图像,服务器返回一个结果,但是我得到了 NullPointerException 错误:

java.lang.NullPointerException
java.io.File.<init>(File.java:277)
the second line of my function File imageFile = File.createTempFile("TEMP","temp...

我立即在我的服务器终端中通过 echo $MY_VAR 验证了环境变量,它给了我正确的值 (/opt/my_app)

为什么我的函数在我的服务器端工作正常,但在客户端却出现 nullPointerException 错误?

我试过将其他文件中的环境变量声明为 ~/.bashrc ~/.profile /etc/bash.bashrc 但没有任何效果。我在其他 post 中读到尝试编辑 ~/.bash_profile 但是 Linux Mint 没有那个文件。

非常感谢任何建议。

客户端抛出NullPointerException是因为环境变量设置不正确,null传给了File的构造函数。

MY_VAR 放入~/.profile 并注意该文件仅在您登录时加载一次。因此,在设置新的环境变量后,请务必注销并重新登录。如果该文件不存在,请创建它。

您可以使用以下方法测试它是否已设置:

$ env | grep MY_VAR
MY_VAR=value

尝试将创建 env 变量和 运行 java 应用程序的命令放入同一个 sh 脚本或同一个 "sandbox"。 IE。您可以将 java 命令放入 /etc/profile.d/my_env_vars.sh 或创建另一个 sh 脚本并将 /etc/profile.d/my_env_vars.sh 和之后的调用放入其中运行 java 应用程序。

您可以尝试在您的客户端中放置变量 filepathprintln 吗? 如果它不打印路径,首先检查客户端和服务器是否能够使用 ssh 相互连接。

我认为问题是因为客户端和服务器之间没有连接。