【发布时间】:2012-04-01 12:28:33
【问题描述】:
我正在做一个项目,一个要求是如果 main 方法的第二个参数以“/”(对于 linux)开头,它应该将其视为绝对路径(不是问题),但如果它不以“/”开头,它应该获取类的当前工作路径,并将给定的参数附加到它。
我可以通过几种方式获取类名:System.getProperty("java.class.path")、new File(".") 和getCanonicalPath(),等等...
问题是,这只给了我存储包的目录 - 即,如果我有一个存储在“.../project/this/is/package/name”中的类,它只会给我“/project/”并忽略包名实际的.class files 生活。
有什么建议吗?
编辑: 这是从练习描述中摘录的解释
sourcedir 可以是绝对的(以“/”开头)或相对于我们运行程序的位置
sourcedir 是 main 方法的给定参数。我怎样才能找到那条路?
【问题讨论】:
-
如果代码打包在 JAR 中(或者不像您假设的那样在文件夹/文件结构中),您会怎么做?这是一个危险的假设;这可能适用于小型实验、课堂作业或其他一次性情况,但请不要养成对生产质量代码做出这种假设的习惯。
-
找不到类文件的路径是没有意义的。练习描述也没有提到如果你仔细阅读它(我们从哪里运行程序是指用户调用程序的当前路径)。
-
也许你可以帮助我更好地理解需求?我需要检查以“/”开头的参数(在描述中提到)。如果是这样,请将其用作绝对值。照原样。但如果不是,我应该如何对待它?
标签: java eclipse package classname