标签: java

Arch:Java“丑陋”字体错误

我知道这是一个非常常见的错误,但是我找不到任何解决方案对我有帮助。

Java 应用程序中的字体很难看

以下是两个示例(处理和 PyCharm):

加工PyCharm
(令人惊讶的是“事件”在这里看起来很好)

正如我上面提到的,有很多解决方案,但没有一个解决了我的问题:

如何修复字体渲染?

一些有用的(也许?)信息:

$ uname -a
Linux scriptim 4.10.10-1-ARCH #1 SMP PREEMPT Wed Apr 12 18:50:28 CEST 2017 x86_64 GNU/Linux

$ java -version
Picked up _JAVA_OPTIONS: -Dawt.useSystemAAFontSettings=on, -Dswing.aatext=true
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
Run Code Online (Sandbox Code Playgroud)

arch-linux java fonts

6
推荐指数
1
解决办法
3002
查看次数

使用 update-alternatives 设置 JAVA_HOME 和 PATH

编辑

问题更多的是关于 bash 脚本和 java 环境,感谢那些有耐心并抽出时间回复我的人。我非常感激。

至于Java环境我开始使用sdkman。当我开始这个小脚本时,我实际上正在寻找类似的东西,我正在考虑做类似的事情。无论谁正在寻找我的问题的答案,我都建议使用该工具。如果你有自己的剧本并不重要,我强烈建议你尝试一下。

sdkman 将关心语言版本安装、侧面需求(如 maven、gradle 和 kotlin)以及环境变量。

https://sdkman.io/


原始问题

我正在构建一个 bash 脚本来自动考虑活动 java 的版本来设置用户的 JAVA_HOME 和 PATH,但是由于某种原因 PATH 没有正确构建,它添加了空格而不是“:”,任何人都可以告诉我为什么?

下面是脚本。

谢谢!

#!/bin/bash

export JAVA_HOME=$(dirname $(dirname `readlink -f /etc/alternatives/java`))

IFS=':';
for i in $PATH;
do
        JAVA1=$i/bin/java
        JAVA2=$i/java
        if [ -d "$i" ];
        then
                if [ ! -L "$JAVA1" ] && [ -x "$JAVA1" ] || [ ! -L "$JAVA2" ] && [ -x "$JAVA2" ];
                then
                        echo "dropping path: $i";
                else
                        NEW=$NEW:$i
                fi
        fi
done
PATH=$NEW:$JAVA_HOME/bin …
Run Code Online (Sandbox Code Playgroud)

bash path java shell-script

6
推荐指数
2
解决办法
9680
查看次数

如何从终端使用 openSSL 执行 HmacSHA256?

我需要从命令行使用 OpenSSL 执行以下 Java 代码片段:

  private byte[] hmacSha256(byte[] key, byte[] payload) throws GeneralSecurityException {
    Mac mac = Mac.getInstance("HmacSHA256");
    mac.init(new SecretKeySpec(key, "HmacSHA256"));
    mac.update(payload);
    return mac.doFinal();
  }
Run Code Online (Sandbox Code Playgroud)

这些是适用于 Java 但不适用于 OpenSSL 的测试值:

KEY_BASE64="xtztqVgjD+5VHL4rVeKYm0USpDJTEy5Tjc9aK6I/oV0="
KEY_HEX="c6dceda958230fee551cbe2b55e2989b4512a43253132e538dcf5a2ba23fa15d"
PAYLOAD_BASE64="j9F8TrzCabcDoLdHUDaUuv6ea224xikwbPF1IW0OjkY="
DIGEST_HEX="c2ec711448a4f5bb851279eca0a628847254855966ad09de7e734b7df48e198a"
Run Code Online (Sandbox Code Playgroud)

我已经尝试过这个答案,但得到了不同的结果。它看起来像这样:

KEY_BASE64="xtztqVgjD+5VHL4rVeKYm0USpDJTEy5Tjc9aK6I/oV0="
KEY_HEX="c6dceda958230fee551cbe2b55e2989b4512a43253132e538dcf5a2ba23fa15d"
PAYLOAD_BASE64="j9F8TrzCabcDoLdHUDaUuv6ea224xikwbPF1IW0OjkY="
DIGEST_HEX="c2ec711448a4f5bb851279eca0a628847254855966ad09de7e734b7df48e198a"
Run Code Online (Sandbox Code Playgroud)

它确实为我提供了十六进制格式的输出,但该值与我使用相同的负载和键值运行该 Java 代码片段时得到的值不匹配。

我还可以使用另一个命令行工具,只要它在大多数 Linux 默认包管理器列表中广泛可用即可。

bash java cryptography openssl

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

从终端运行 java 类文件

我有一个编译的 java 文件somefile.class,当我 cd 到正确的文件夹并执行以下操作时:java somefile它可以工作,但是当我从另一个文件夹调用它时:java folder/somefile它不起作用,它给了我 java 异常,你能帮我吗?

编辑:如果这很重要,我正在 Mac 上工作。

command-line java

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

Java 无法从 Linux 客户端的缓存中获取 TGT

我已经在 RHEL5.5 中设置了 Kerberos 服务器和 OpenLDAP。我还有一台 RHEL6 机器作为客户端。我已经运行了我的 Java 程序,jaas用于从 Linux 客户端查询 OpenLDAP 服务器。

如果将客户端的密钥表复制到客户端计算机并使用以下配置选项,则可以查询 OpenLDAP 服务器:

principal=wpingli
useKeyTab=true
keyTab="/home/wpingli/ker/java/wpingli_new.keytab";
Run Code Online (Sandbox Code Playgroud)

如果提示我输入用户/密码,我也可以查询 OpenLDAP 服务器。这让我相信我的环境没问题。

但是,如果我在以下之后运行 Java 程序,则无法查询服务器kinit

klist
[wpingli@pli java]$ klist
Ticket cache: FILE:/tmp/krb5cc_500
Default principal: wpingli@XX.COM
Valid starting Expires Service principal
10/20/11 16:18:06 10/21/11 16:18:02 krbtgt/XX.COM@XX.COM

jaas configuration
GssExampleSUN{
com.sun.security.auth.module.Krb5LoginModule required
client=true
debug=true
doNotPrompt=true
useTicketCache=true
ticketCache="/tmp/krb5cc_500";
};

Exception:
Debug is true storeKey false useTicketCache true useKeyTab false doNotPrompt true ticketCache is /tmp/krb5cc_500 isInitiator true KeyTab is …
Run Code Online (Sandbox Code Playgroud)

java kerberos openldap

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

如何让 unix sort 以与 Java 相同的顺序排序(按 unicode 值)

我在我编写的 Java 程序中对 unix sort 命令进行排序。但是,由于 Java 的字符串比较的行为与排序进行的比较不同,我遇到了问题。

来自 [Java 文档][1]:

按字典顺序比较两个字符串。比较基于字符串中每个字符的 Unicode 值。

从排序手册页:

* 警告 * 环境指定的语言环境会影响排序顺序。设置 LC_ALL=C 以获取使用本机字节值的传统排序顺序。

所以我的猜测是需要使用 LC_ALL=C 进行排序。但是我一直认为这意味着基于 ASCII 值排序,这意味着谁知道 unicode 会发生什么。

java sort unicode

5
推荐指数
1
解决办法
2510
查看次数

Linux 运行缓慢,仅剩 0 个交换空间

我们的 Linux 服务器响应非常缓慢。top没有显示任何过多的 CPU 使用率。我注意到即使有大约 5GB 的空闲内存,系统也正在使用所有交换空间,而没有剩余的空闲交换空间。这可能是系统运行缓慢的原因吗?除了减少进程数之外还有什么解决办法吗?

其次,即使有可用内存,为什么 Linux 已经交换了?我认为只有在没有实际内存时才使用交换。

free -m
             total       used       free     shared    buffers     cached
Mem:         32045      26218       5826          0        127        123
-/+ buffers/cache:      25967       6077
Swap:        16387      16387          0
Run Code Online (Sandbox Code Playgroud)

更新:

  • swapiness 处于默认级别:60
  • 我不认为这是一个numa系统
  • 我看到几个运行 8GB 堆的 java 进程: -Xms8000m -Xmx8000m

乍一看似乎很疯狂,但可能有人有这样做的理由。我认为这是占用大部分交换空间的原因,但我需要进一步研究 Java 堆如何影响 Linux 交换和内存/性能。任何有关上述 java 堆配置对系统性能影响的指针都将非常有帮助。

linux performance process java swap

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

如何更新冰茶?

我只使用 Linux 大约一个月。我正在运行 Mint 13。我正在尝试使用 www.goproblems.com,但它告诉我我的 IcedTea 已过期。我希望有一个包裹,但我找不到它。我尝试从源代码构建它,但失败了。

我读到它需要 GTK+,但是当我检查出来时,该站点说 GTK+ 依赖于我可能必须从源代码安装的 5 个其他软件包。

我的问题是:如果有冰茶套餐,它在哪里?

(另外,有人可以推荐一个在线资源,教我如何做好这件事吗?)

java software-installation linux-mint gtk

5
推荐指数
1
解决办法
2802
查看次数

在 linux 6.1 上安装 Oracle 11g r2

我正在尝试在 Linux 6.1 上安装 Oracle 11g r2,但几天后我没有成功。当我完成了 oracle 11 g 的所有先决条件后。但是当我运行安装程序时,我收到了这个错误

Checking Temp space: must be greater than 80 MB.   Actual 18741 MB    Passed
Checking swap space: must be greater than 150 MB.   Actual 4095 MB    Passed
Checking monitor: must be configured to display at least 256 colors
    >>> Could not execute auto check for display colors using command /usr/bin/xdpyinfo. Check if the DISPLAY variable is set.    Failed <<<<

Some requirement checks failed. You must fulfill these requirements before

continuing …
Run Code Online (Sandbox Code Playgroud)

oracle-database java

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

如何找出正在使用的JRE?

我的系统中有一个 Java .jar 正在运行。我怎么知道那个 .jar 正在使用哪个 JRE?我在多个位置有多个 JRE。

which java命令产生

/usr/bin/java
Run Code Online (Sandbox Code Playgroud)

$JAVA_HOME 被设定为 /usr/java/jdk-1.6.0

ps -ef 产生

\xyzusr     5206     1  0 02:10 ?        00:00:00 ScrapJAR -p -u 2694 -g 15464 -- java -server -XX:+AggressiveHeap -Xms2048m -Xmx2048m -Xss512k
Run Code Online (Sandbox Code Playgroud)

java jdk

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