gpt4 book ai didi

java - shell 脚本: running a java application and sending command-line args to it via the script?

转载 作者:行者123 更新时间:2023-12-01 17:33:01 24 4
gpt4 key购买 nike

这是一个类。我以前从未使用过 shell 脚本,但说明是编写一个运行我的 java 程序的脚本(该程序已经全部设置为接受命令行参数(至少一个参数,以及可选的第二个参数))。我应该能够像这样运行它:

./script.sh arg1 arg2

但是当我这样做时,我收到以下错误(我的 java 主类名称是 A1):

  Exception in thread "main" java.lang.NoClassDefFoundError: A1/class
Caused by: java.lang.ClassNotFoundException: A1.class
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
Could not find the main class: A1.class. Program will exit.

这就是我的 shell 脚本现在的样子:

#!/bin/sh

java -Xmx1024m A1.class $@

感谢任何帮助。

最佳答案

您需要告诉 java 在哪里查找您的类(使用 -cp) - 在目录或 .jar 中

要查找脚本所在的目录(而不是启动脚本的目录),您可以使用:$(dirname $0)

例如:

#!/bin/bash

JVM=java
JVM_OPTS="-Xmx1024m"

$JVM $JVM_OPTS -cp $(dirname $0)/myapp.jar A1 "$@"

明确您想要的 shell 是个好主意。另请注意 $@ 周围的引号,这是转义参数所需的。

关于java - shell 脚本: running a java application and sending command-line args to it via the script?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9154832/

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