java工程中有读文件功能,打成jar包后,bat运行报路径不正确的错误。

robin嘟嘟 2014-11-19 10:56:45
java工程中有读取excel功能,eclipse中运行都正常。
采用相对路径
URL url = RegLogin.class.getResource( filename + ".xls");
File file = new File(url.getPath());

export成jar包。

然后采用bat执行
@echo off
echo 开始执行程序...
java -classpath $CLASS_PATH;lib\* org.testng.TestNG -d log Suite.xml
echo 执行结束...
pause
报错:
"java.lang.RuntimeException: java.io.FileNotFoundException: file:\E:\javaWorkspace\passport\lib\passport.jar!\com\cntv\passport\RegLogin.xls (文件名、目录名或卷标语法不正确。)
Caused by: java.io.FileNotFoundException: file:\E:\javaWorkspace\passport\lib\passport.jar!\com\cntv\passport\RegLogin.xls (文件名、目录名或卷标语法不正确。)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(Unknown Source)
at com.util.ExcelReader.getRunData(ExcelReader.java:26)
at com.cntv.passport.RegLogin.createData(RegLogin.java:44)
... 19 more
... Removed 26 stack frames


请问,这路径应该如何写,才能不报这种错误。
...全文
367 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
姜小白- 2014-11-19
  • 打赏
  • 举报
回复

Properties config = new Properties();
File configFile = new File("config.properties");
config.load(new FileInputStream(configFile));
System.out.println(config.getProperty("url"));
BufferedReader reader = new BufferedReader(new FileReader(new File("test.avl")));
我以前代码中的一段读取配置文件和资源文件的代码 路径就使用默认的路径,将config.properties 和 test.avl 文件就放在eclipse的工程的根目录下面 如果工程导出为jar的时候,将config.properties 和 test.avl 放到跟jar同目录下面就可以访问的到 建议不要用 URL url = RegLogin.class.getResource( filename + ".xls"); 这种方式,直接使用文件名就可以了
robin嘟嘟 2014-11-19
  • 打赏
  • 举报
回复
我在java文件中是这么写的 URL url = RegLogin.class.getResource( filename + ".xls"); File file = new File(url.getPath()); 然后生成jar包后,把文件放在了lib下,跟jar包同一个目录下, 运行: java -classpath $CLASS_PATH;lib\* org.testng.TestNG -d log Suite.xml 仍然报错: java.lang.RuntimeException: java.io.FileNotFoundException: file:\E:\javaWorkspace\passport\lib\passport.jar!\com\passport\RegLogin.xls (文件名、目录名或卷标语法不正确。) 在java文件中这么写: URL url = RegLogin.class.getResource(“/config/”+ filename + ".xls"); File file = new File(url.getPath()); bat中这么调用: java -classpath $CLASS_PATH;config\*;lib\* org.testng.TestNG -d log Suite.xml 还是报错。 求教了。
姜小白- 2014-11-19
  • 打赏
  • 举报
回复
可以使用默认路径,直接写,文件跟jar包放到同一个目录下面就可以读取到的 或者 指定一个配置文件(文件路径默认同jar同目录即可),让java jar读取配置文件,然后在配置中配文件路径,这个方便调试
robin嘟嘟 2014-11-19
  • 打赏
  • 举报
回复
嗯,好的。多谢。 我发现确实是URL这句导致的问题。 另外 RegLogin.class.getResource("/").getPath()这句也出问题,

50,542

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧