【问题标题】:Shell behavior: Two (identical?) instances behave differently wrt javaShell 行为:两个(相同?)实例在 java 中的行为不同
【发布时间】:2011-10-14 15:34:42
【问题描述】:

我正在运行 FreeBSD 8.0-RELEASE (GENERIC) #0: Sat Nov 21 15:02:08 UTC 2009 并使用 Putty 从 Win7 机器上获取它。我在 stackoverflow 上发现了一些 FreeBSD 设置问题,这些问题解决了 Java 根本无法运行的原因,但我不明白为什么它有时会运行。它似乎是随机的,并且它破坏了我的 shell 脚本的功能(我没有编写它并且没有错误处理,所以我最终导致数据损坏),除非在每次运行之前,我都输入

$java

只是为了确保它正常工作,而不是得到

错误:找不到 libjava.so

错误:找不到 Java 2 运行时环境。

这似乎有点随机。

例如,当我第一次登录服务器时

ssh 服务器名

export PATH= /home/223fms/bin:/usr/java/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin: /usr/local/bin::/usr/X11R6/bin:/home/223fms/:

【问题讨论】:

  • 检查 JAVA_HOME 环境变量。动态库可能还有一个变量(应该在其中找到 libjava.so)。
  • 另外,为什么这个标签是 linux?你在 FreeBSD 上使用 Linux JRE 吗? (BSD 系统与 Linux 没有遗传关系。)
  • 请记住,Java 的开源实现可以随某些发行版一起分发。如果您在系统上安装 Sun(或其他)Java 发行版,那么您可能会遇到一些可执行文件和库的冲突。如上所述,确保设置了 JAVA_HOME 变量,并确保在当前运行的 shell 中设置了它。

标签: java bash shell environment-variables freebsd


【解决方案1】:

根据您的描述,这会随机发生在登录之前。一旦您登录,它要么总是有效,要么无效(这就是您建议进行测试的原因,对吧?)

那么,您可能每次都登录到不同的机器(如果机器位于负载平衡器后面)。无论如何,环境因一台机器而异。

如果环境是由远程连接中的脚本设置的(例如安装了 NFS)并且网络不稳定,也可能发生这种情况。所以要么设置正确,要么设置不正确,但这是在一开始就完成的。

我建议你只记录 env 的输出和 java 的调用来查找它的来源。

【讨论】:

    猜你喜欢
    • 2020-05-16
    • 1970-01-01
    • 2018-05-03
    • 1970-01-01
    • 2021-07-11
    • 1970-01-01
    • 2017-01-10
    • 2019-09-14
    • 2019-04-03
    相关资源
    最近更新 更多