java - 在 linux 上从终端运行 jar 文件

标签 java linux jar terminal sh

我正在尝试从终端运行我的项目 jar。 我的项目包含菜单的 SWT 库和图像文件夹。 我在 sh 文件上写了命令,但我收到了一个错误。

我的脚本:

java -cp /root/Desktop/applicationFramework/SWT/swtLinux.jar:/root/Desktop/applicationFramework/images/AppMenu.png:/root/Desktop/mainProject.jar boot.Run

我得到的错误是:

Exception in thread "main" org.eclipse.swt.SWTException: i/o error (java.io.FileNotFoundException: images/AppMenu.png (No such file or directory))
    at org.eclipse.swt.SWT.error(SWT.java:4441)
    at org.eclipse.swt.SWT.error(SWT.java:4356)
    at org.eclipse.swt.graphics.ImageLoader.load(ImageLoader.java:176)
    at org.eclipse.swt.graphics.ImageDataLoader.load(ImageDataLoader.java:26)
    at org.eclipse.swt.graphics.ImageData.<init>(ImageData.java:377)
    at org.eclipse.swt.graphics.Image.<init>(Image.java:668)
    at view.MenuWindow.initWidgets(MenuWindow.java:52)
    at view.BasicWindow.run(BasicWindow.java:52)
    at view.MenuWindow.start(MenuWindow.java:211)
    at boot.Run.main(Run.java:13)
Caused by: java.io.FileNotFoundException: images/AppMenu.png (No such file or directory)
    at java.io.FileInputStream.open(Native Method)
    at java.io.FileInputStream.<init>(FileInputStream.java:146)
    at java.io.FileInputStream.<init>(FileInputStream.java:101)
    at org.eclipse.swt.internal.Compatibility.newFileInputStream(Compatibility.java:183)
    at org.eclipse.swt.graphics.ImageLoader.load(ImageLoader.java:173)
    ... 7 more

编写运行我的项目的脚本的正确方法是什么?

谢谢。

最佳答案

这样运行jar貌似没什么问题。但它未能找到所需的资源。我的理解是它正在从相对文件路径而不是类路径中查找图像,请尝试复制它正在加载的图像 images/appMenu。 png 到你运行它的相对目录。或者在原始应用程序包上下文中运行,这样路径将是正确的,而不是从桌面运行。移动是首选,因为在运行时可能会加载其他缺少的资源。

cd /root/Desktop/applicationFramework

java -cp SWT/swtLinux.png:/root/Desktop/mainProject.jar boot.Run

关于java - 在 linux 上从终端运行 jar 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37442759/

相关文章:

c++ - 在 LINUX 上获取设备输入(鼠标、键盘……)

java - 可运行 jar 中的 ElasticSearch : lucene problems

java - 如何将 UTC 日期时间转换并格式化为本地时间

java - 如何在 Java 中使用 Clock 类从当前日期减去 2 个月

java.util.Collections$UnmodifiableRandomAccessList 到 Collections.singletonList

java - 为什么通过 Ghostscript API 渲染图像需要这么长时间?

linux - 条件变量和rwlock死锁

linux - 在Ubuntu Server 16.04的fstab中自动挂载VirtualBox共享文件夹

java - 在java中执行外部命令行实用程序并将其打包到可运行的jar中

java - Java中 "Hot Reload"的定义