2014-09-01 96 views
0

我有一个Java桌面应用程序,我在我拉上分发给学生的NetBeans开发。这里面的zip文件我有的.jar,包含摆动布局罐子“lib”目录和目录我名为包含所需的所有程序中的文本文件“sourcefiles”。打开文件,而不是当前工作目录

所有工作正常,如果jar文件被双击,但是从命令行java -jar MyApp.jar)运行时,它只能找到“sourcefiles”目录,如果你第一次到该目录的文件在运行命令之前,有些学生会忘记做的事情。显然,没有办法从我的代码中改变当前的工作目录。以“sourcefiles”的路径在我的代码为相对路径给出,假设我在MyApp的文件夹。那么我该怎么做才能让程序可以从命令行运行,而不必将cd包含到包含目录中?有什么需要将其添加到清单文件?

这个问题可以通过使用Linux的学生大多是面对,但它是在Mac上一样。我认为它在Windows上是一样的,但我猜想没有一个Windows的学生从命令行运行它。

+0

如何访问你的资源,你的代码? – Dici 2014-09-01 14:22:09

+0

BufferedReader f = new BufferedReader(new InputStreamReader(new FileInputStream(filename),“UTF-8”));其中filename是相对路径:sourcefiles/xxxxx。运行程序的jar文件,java库和sourcefiles文件夹都在一个文件夹中,然后我将其压缩以发送给学生。我不希望jar包含源文件,因为它们是可能被程序修改的资源。除了命令行之外,此路径似乎适用于所有内容。 (这些是人文学生,比其他人更懂技术。) – Numa 2014-09-05 09:43:54

回答

1

您不能更改默认的目录,但你可以得到的目录罐类是运行并使用在你的代码为基础路径。

String jarLocation = ThisClass.class.getProtectionDomain() 
         .getCodeSource().getLocation().getPath(); 

从这里就可以得到该目录的jar是,很可能你会想这个包裹起来为你的学生可以调用的方法。

+0

我用zikaDirectory = jarFile.getParentFile()。getName();然后如果(!zikaDirectory.equals(currentWorkingDirName))发现这是否发生,但我对你的文章的最后一行关于使用该程序的学生可以调用的方法感到困惑。 – Numa 2014-09-03 10:29:55

+0

@Numa我建议你给学生一些隐藏一些更难的代码的代码。 – 2014-09-04 16:11:12

相关问题