标签: java

用于监控 Java 堆的命令行工具

CentOS中是否有任何命令行工具可以监控Java的堆大小使用情况?

command-line java

16
推荐指数
3
解决办法
7万
查看次数

JAVA_HOME 和 update-alternatives 有什么区别?

我一直试图找出将 OpenJDK Java 运行时作为我的 Fedora 机器的默认 Java 运行的最佳方法,并使用 Oracle JDK 6 进行 Android 开发,即从 Android Bundle 运行 Android SDK Manager、Android Studio 和 Eclipse。

我从 Fedora 存储库安装了 OpenJDK Java Runtime,它具有如下设置替代方案。

[donnie@fedora ~]$ alternatives --list | grep java
jre_openjdk             auto    /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.60-2.4.5.1.fc20.x86_64/jre
jre_1.7.0               auto    /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.60-2.4.5.1.fc20.x86_64/jre
java                    auto    /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.60-2.4.5.1.fc20.x86_64/jre/bin/java
libjavaplugin.so.x86_64 auto    /usr/lib64/IcedTeaPlugin.so
Run Code Online (Sandbox Code Playgroud)

我已经使用 Oracle 提供的 rpm 安装了 Oracle JDK 6。

我可以通过在.bashrc.

export JAVA_HOME=/usr/java/jdk1.6.0_45/
export PATH=$JAVA_HOME/bin:$PATH
Run Code Online (Sandbox Code Playgroud)

我注意到 Chrome 仍然使用 OpenJDK(因为我仍然需要链接插件)。

JAVA_HOME 和使用替代品有什么区别?

java alternatives

16
推荐指数
1
解决办法
2万
查看次数

有没有办法判断shell脚本是否被信号9杀死

我有一个 bash 脚本(从 Java 程序调用),它不断被杀死。我总是赶上signal 15trap但随后出现了一些我怀疑是的其他信号,signal 9但对于它是否真的是一无所知signal 9

我知道你不能trap signal 9,那么有没有其他方法可以判断是否signal 9正在杀死我的 shell 脚本?

bash kill signals java shell-script

16
推荐指数
1
解决办法
2978
查看次数

如何在 Awesome WM 中修复 Java 应用程序鼠标指针偏移?

如何在 Awesome WM v3.5.2 到 3.5.5(到目前为止)中重现:

  1. 安装 OpenJDK 或 Oracle Java 7。两者均已观察到此错误。
  2. 使用默认配置启动一个新的 Awesome WM 会话。
  3. 启动jEditPyCharm。两者均已观察到此错误。
    • 四处移动鼠标指针,观察鼠标悬停在代码、项目文件或菜单上的变化。这应该正常工作。
    • 文件菜单上单击并释放,进入其中一个子菜单,观察鼠标指针正下方的项目是如何一直聚焦的。
  4. 重复按Mod4+Space直到激活浮动布局(应用程序将几乎全屏显示)在同一标签中打开另一个应用程序。

在这一点上,我希望鼠标的行为与“普通”应用程序一样。相反,我观察到以下几点:

  • 当使用鼠标单击和导航菜单时,鼠标指针和聚焦的菜单项将彼此垂直偏移,看起来与状态栏的高度相同的像素量。
  • 当像以前一样悬停在杂项上时,光标图标将被设置为鼠标指针在屏幕上的更高位置。例如,将鼠标悬停在文本的顶行上,您将不会看到文本光标。

就好像有些东西没有检测到窗口坐标发生了变化。

当您在同一标签中打开另一个应用程序时,会发生类似但更烦人的错误- 鼠标行为就好像窗口根本没有移动一样。

当您切换另一个已打开应用程序的标签时- “虚拟鼠标桌面”将移至主屏幕的左上角

由于在 OpenJDK 和 Oracle Java 中都观察到了这些错误,在不同的 Java 应用程序中,该错误似乎很可能在 Awesome WM 中。

相关问题文章。我试过_JAVA_AWT_WM_NONREPARENTINGwmname修复,但没有去。

java awesome

15
推荐指数
1
解决办法
2915
查看次数

从 Java 调用系统调用

有没有办法直接从 Java 调用系统调用,还是必须先调用本机方法?

linux java

13
推荐指数
1
解决办法
7574
查看次数

如何在 Debian 11 (Bullseye) 上安装 Java 8?

这个答案解释了为什么它被删除。我对原因不感兴趣,相反,我需要安装它。该虚拟机专门用于我的 Java 应用程序,因此我对使用容器并不真正感兴趣。该答案提到您可以从 Stretch 存储库中获取它,但我不想创建 Franken-Debian,所以我不确定这是否是一个好主意。我需要从 OpenJDK 安装 Java 8 JRE。我安装了 Debian 11,并由于虚拟机管理程序错误*而使用了高级安装。

这是我安装它时所做的:

$ sudo apt update
...
$ sudo apt install openjdk-8-jre
Reading package lists... Done
Building dependency tree... Done
Building state information... Done
Package openjdk-8-jre is not available, but is referenced to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another sources
However the following packages replace it:
  nvidia-openjdk-8-jre

E: Package 'openjdk-8-jre' has …
Run Code Online (Sandbox Code Playgroud)

debian java apt software-installation openjdk

13
推荐指数
3
解决办法
5万
查看次数

我在哪里可以设置全局 Java 选项?

我在 Java 程序(例如jabrefrubymine. 这可以通过运行来修复

_JAVA_OPTIONS='-Dawt.useSystemAAFontSettings=on' jabref
Run Code Online (Sandbox Code Playgroud)

我知道我可以将这些 Java 选项导出为环境变量,并从命令行启动程序。但是,有没有办法全局设置这些选项,以便所有 Java 程序都能识别它们,无论它们如何启动?

我也知道我可以修改*.desktop我的 Java 程序的所有文件,但我正在寻找一个全局解决方案。

java-7-openjdk在 Arch Linux 上使用。(FWIW以前安装了现在损坏的jre7-openjdk-headless-infinality 就可以了。)

java fonts environment-variables

12
推荐指数
1
解决办法
4万
查看次数

使用 systemd 配置 java 守护进程

我将这个定义用于systemd工作:

 [Unit]
 Description=Some job

 [Service]
 ExecStart=/usr/local/sbin/somejob
 User=dlt
 Type=forking

 [Install]
 WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)

脚本调用如下(调用一个简单的例程,侦听 tcpip 套接字并将输入附加到文件):

 #!/bin/sh

 cd /home/user/tmp/testout
 nohup java -jar /home/user/programming/tests/java/core/SocketTest/SocketTest.jar </dev/null >/dev/null &
Run Code Online (Sandbox Code Playgroud)

之后systemctl start somejob的过程显示为下运行,同时init作为其父:

 user@CANTANDO ~$ ps -u dlt eo pid,ppid,command
   PID  PPID COMMAND
  8718     1 java -jar /home/user/programming/tests/java/core/SocketTest/SocketTest.jar
Run Code Online (Sandbox Code Playgroud)

执行systemctl stop somejob该过程后不再显示(并且端口已关闭)。

所以一切看起来都很好

我的问题是:这是运行 java 守护进程的可接受的解决方案systemd,还是有警告,以及其他更稳定或安全的方法来实现这一目标?

java systemd daemon

12
推荐指数
1
解决办法
2万
查看次数

为什么 Java 8 被 Debian Buster 排除在外?

仔细检查:您可以简单地从 Stretch 存储库安装 java8。几个月前,它在生产环境中运行良好。没有理由为此推迟升级。(@彼得)

Debian 的最新稳定版本 Debian Buster 不再有 Java 8。

然而,Java 8 仍然广泛用于生产环境,在任何升级之前这样做是一个巨大的后备。

任何人都更了解 Debian 邮件列表的内部结构,以及他们的交流,他们这样做的原因是什么?

有没有希望,Java 8 曾经以某种升级的形式重新出现?

当然,从不同的来源(Oracle、Ubuntu),甚至从 Stretch 包存储库安装 Java 8 是一个可行的选择。但是这样做,我们完全失去了官方回购的优势。

debian java

12
推荐指数
1
解决办法
934
查看次数

我怎么知道加载了哪个 unistd.h 文件?

unistd.h我的 Ubuntu Linux 中有几个文件。我有一个/usr/include/asm/unistd.h。该文件具有以下指令:

# ifdef __i386__
#  include "unistd_32.h"
# else
#  include "unistd_64.h"
# endif
Run Code Online (Sandbox Code Playgroud)

在那个文件夹中,我可以找到那些文件(unistd_32.hunistd_64.h)。

但是/usr/src/linux-headers-2.6.31-22/include/asm-generic/还有另一个unistd.h以这个指令开头:

#if !defined(_ASM_GENERIC_UNISTD_H) || defined(__SYSCALL)
#define _ASM_GENERIC_UNISTD_H
Run Code Online (Sandbox Code Playgroud)

所以,问题是:我怎么知道哪个加载了?有什么方法可以在运行时使用 Java 进行检查吗?

linux c java

11
推荐指数
1
解决办法
1万
查看次数