gpt4 book ai didi

java - Linux 终端 : How to pass an argument to another argument

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:10:29 29 4
gpt4 key购买 nike

我有一个在特殊环境下运行其他程序的系统程序: cset shield -e PROGRAM .现在要运行一个 java 程序,我输入了 cset shield -e java PROGRAM ,但这不起作用。原来我必须指定java的完整路径.然而,PATH设置好了,所以就靠自己了java PROGRAM作品。有没有更简单的方法来做到这一点?

此外,我的另一个 java 程序需要外部库并自行运行良好。但是用cset shield , 我得到了 NoClassDefFoundError ,这意味着它找不到库。添加类路径参数 ( -cp CLASSPATH ) 导致错误消息 "p" contains invalid characters: p .


在尝试了各种建议及其排列组合之后,我想到了一种行之有效的方法:cset shield --exec -- $(which java) -cp ./:<LIB_PATH>/DA_LIB.jar PROGRAM .但是有了这个我得到了UnsatisfiedLinkError: Library not found: DA_LIB

最佳答案

你可以试试 which定位java:

cset shield -e $(which java) PROGRAM

这将在特殊环境下运行 java,而不是在子 shell 中。 (很明显,which 将在子 shell 中运行)。

修复 CLASSPATH问题:我不能在这里测试,但你可以试试这个:

cset shield -e "$(which java) -cp <CLASSPATH> PROGRAM"

在哪里<CLASSPATH>需要替换为实际的类路径。

关于java - Linux 终端 : How to pass an argument to another argument,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6952117/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com