【问题标题】:my server-side shows nullPointerException when client-side runs java [duplicate]当客户端运行 java [重复] 时,我的服务器端显示 nullPointerException
【发布时间】:2018-01-29 04:26:06
【问题描述】:

我有一台装有 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,但没有任何效果。我在其他帖子中阅读以尝试编辑 ~/.bash_profile 但 Linux Mint 没有该文件。

我非常感谢任何建议。

【问题讨论】:

  • 您是如何运行您的服务器应用程序的? java -jar server-app.jar 在命令行中???首先,您必须确定服务器应用程序的运行方式,然后仔细检查您的 .profile。 2nd,添加更多日志到您的应用程序中进行跟踪。
  • 感谢您的回答。我用 Wildfly8 运行我的服务器端。我在终端中通过以下方式启动它:sudo ./standalone -b 0.0.0.0。一旦启动,我可以在浏览器中检查应用程序,在终端中我可以检查来自浏览器或客户端的任何请求。我的客户端在树莓派中工作。但它没有任何操作系统登录

标签: java bash nullpointerexception environment-variables linux-mint


【解决方案1】:

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

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

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

$ env | grep MY_VAR
MY_VAR=value

【讨论】:

  • 感谢您的帮助。实际上,我意识到我在我的用户中设置了我的环境变量,但是我以 root 身份运行我的服务器端。因此,env 变量没有出现。
【解决方案2】:

尝试将创建环境变量并运行 java 应用程序的命令放入相同的 sh 脚本或相同的“沙箱”中。 IE。您可以将 java 命令放入 /etc/profile.d/my_env_vars.sh 或创建另一个 sh 脚本并将 /etc/profile.d/my_env_vars.sh 的调用放入其中,然后运行 ​​java 应用程序。

【讨论】:

  • 您好,谢谢您的回答。实际上,我在声明 $JAVA_HOME 的同一路径 /etc/profile.d/ 中有一个 java.sh。因此,我将环境变量放在 $JAVA_HOME 之前的 java.sh 中。但我收到相同的空错误。还有其他建议吗?
【解决方案3】:

您可以尝试将变量filepathprintln 放入您的客户端。 如果没有打印路径,首先检查客户端和服务器是否能够使用ssh相互连接。

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

【讨论】:

    猜你喜欢
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-27
    • 2021-09-04
    • 1970-01-01
    • 2017-06-19
    相关资源
    最近更新 更多