当前位置: 首页 > 面试题库 >

如何从其他目录运行Java程序?

章涵蓄
2023-03-14
问题内容

我有一个Java程序,希望可以在计算机上的任何位置运行。我想从Cygwin命令提示符下运行它。我编写了脚本来调用Java程序。我将Java程序的位置添加到类路径中,并且当我从Java程序的目录运行它们时,脚本可以工作。但是,当我尝试从任何其他目录运行时,我得到:

java.lang.NoClassDefFoundError: commandprogram/CommandProgram

这是我的脚本:

#!/bin/sh
CWD=`dirname "$0"`
java -cp "$CWD/classes;$CWD/lib/AJarFile.jar" commandprogram/CommandProgram

将Java行更改为以下内容:

java -cp "$CWD/classes;$CWD/classes/commandprogram;$CWD/lib/AJarFile.jar" CommandProgram

产生相同的结果。


问题答案:

在尝试了所有我能想到的一切之后,我回显了该命令,并发现Cygwin路径和Windows路径混合在一起。解决方案是将脚本更改为:

#!/bin/sh
CWD=`dirname "$0"`
CWD=`cygpath -w "$CWD"`
java -cp "$CWD/classes;$CWD/lib/AJarFile.jar" commandprogram/CommandProgram

然后,CWD更改为“ C:\ Program Files \ …”,而不是“ / cygdrive / c / Program \ Files /
…”

我以前曾遇到过此问题,并通过解决cygpath -w方案解决了该问题,但是后来我的脚本稍有更改,却没有注意到路径问题再次出现。



 类似资料:
  • 问题内容: 我需要从自己的Java程序中运行其他几个程序,基本上我需要运行这些命令行语句。 和 并且我需要在自己的程序中使用从这些程序写入控制台的文本输出。我已经尝试过使用svn运行Runtime.getRuntime()。exec(),但是它似乎没有做任何事情,因为它没有生成svn.log文件。同样,两个程序都需要在不同的地方调用,svn行需要从一个文件夹内调用,而java行需要从另一文件夹内调

  • 我有我所有目录的结构: 我正在尝试编译和执行ServerMain和ClientMain。以下编译工作: 我必须不在src中执行程序,而是在前一个目录中执行,因为在代码中有一个从cfg目录中的配置文件读取的函数。 我试图执行这个命令,但我有很多错误:ClassesNotFound或cfg文件路径中的错误(代码中是/cfg/server.cfg)或ServerMain未找到。 以下命令在图像中项目的s

  • 当因为特殊原因要把卸载程序写到系统的其他目录时,我们会认为直接就是把 uninst.exe 放到其他目录就可以了,但是实际上,NSIS 在卸载时 $INSTDIR 是指向 uninst.exe 的当前目录的。所以我写了一个例子,首先,用向导生成一个基本脚本,然后修改。 引用 test.nsi 的内容: ; 该脚本使用 HM VNISEdit 脚本编辑器向导产生 ; 安装程序初始定义常量 !

  • 如何检查一个给定的文件是否在另一个文件下?例如,我有< code>new Paths.get("/foo/bar/" 和< code > new paths . get("。/abc/def.jar")。我想检查第二个是否在< code>/foo/bar下。 我可以找出一些基于字符串的比较,比如< code>path.toFile()。getAbsolutePath()。startsWith(pa

  • 问题内容: 我有用R编写的程序。我可以从R GUI运行它,它会吐出结果。 有没有办法从Java运行该程序? 问题答案: 您可能需要看一下这三个项目。 JRI-Java / R接口 Rserve rcaller

  • 问题内容: 假设我的项目位于并且我当前的位置是如何在不更改项目位置的情况下运行? 问题答案: 您可以使用参数(或)并指定文件的路径,例如 这会像在工作目录中一样“运行” 。