JSP中调用java类,系统找不到指定文件

问题描述

JSP页面中调用后台的java类,java类中想读取某个路径的文件,但是系统提示找不到指定的路径我大概知道估计是Web页面通过tomcat服务器后路径问题但不知道怎么解决而且调用的这个java类是个普通类不是servlet,不用request希望高手帮小弟解决一下JSP:<%@pagelanguage="java"contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"><html><head><metahttp-equiv="Content-Type"content="text/html;charset=UTF-8"><title>ATAList</title><linkrel="stylesheet"href="#"type="text/css"></head><jsp:useBeanid="domparser"scope="page"class="tcp.testATA"/><jsp:setPropertyname="domparser"property="*"/><%domparser.serach_ATAID();%><body>testtesttest</body></html>java类放在src.tcp下:packagetcp;importjava.io.BufferedReader;importjava.io.File;importjava.io.FileReader;publicclasstestATAextendsThread{publicStringstrXML="";publicStringgetString(){returnstrXML;}publictestATA(){}publicvoidserach_ATAID()throwsException{Stringv_strXML="";try{Filefile=newFile("./WebContent/images/book.xml");Stringaa=System.getProperty("java.class.path");System.out.println("33333"+file.exists());System.out.println("44444"+file.getPath());System.out.println("55555"+aa);FileReaderfileReader=newFileReader(file);BufferedReaderreader=newBufferedReader(fileReader);char[]buf=newchar[1024*100];reader.read(buf);v_strXML=newString(buf);reader.close();}catch(Exceptione){e.printStackTrace();System.out.println("捕获异常呢4?"+e);}}}要读取的xml文件<?xmlversion="1.0"encoding="utf-8"?><FaultGuide><member><FaultID>02</FaultID><FaultCode>300-600-900</FaultCode><content>1111</content></member><member><FaultID>01</FaultID><FaultCode>300-600-900</FaultCode><content>2222</content></member></FaultGuide>

解决方案

解决方案二:
1、首先jsp是在Server端执行,由jsp引擎编译成servlet,然后执行,所以很多人说jsp就是一个servlet2、jsp中调试不如servlet中方便,建议你先在servlet调试通过,再放进jsp调试
解决方案三:
路径对不对额
解决方案四:
把路径写全,看看能不能访问,如果能访问再想其他办法
解决方案五:
引用3楼shixitong的回复:

把路径写全,看看能不能访问,如果能访问再想其他办法

写绝对路径是没有问题的可以找的到但是相对路径就不可以了怀疑是通过web后走的tomcat的路径所以一直提示找不到文件
解决方案六:
引用2楼rui888的回复:

路径对不对额

写绝对路径是没有问题的可以找的到但是相对路径就不可以了怀疑是通过web后走的tomcat的路径所以一直提示找不到文件
解决方案七:
引用5楼purifypipi的回复:

Quote: 引用2楼rui888的回复:
路径对不对额

写绝对路径是没有问题的可以找的到但是相对路径就不可以了怀疑是通过web后走的tomcat的路径所以一直提示找不到文件

能不能把这个路径写在属性文件里?
解决方案八:
现在这个不是servlet,要是servlet还是拼个全路径出来
解决方案九:
引用6楼shixitong的回复:

Quote: 引用5楼purifypipi的回复:
Quote: 引用2楼rui888的回复:
路径对不对额

写绝对路径是没有问题的可以找的到但是相对路径就不可以了怀疑是通过web后走的tomcat的路径所以一直提示找不到文件

能不能把这个路径写在属性文件里?

写在属性文件里是什么意思呢?property?
解决方案十:
其实也可以给这个方法加个参数,把路径传进去最终组装成http://ip:duankou/images/book.xmlhttp://ip:duankou/这一部分可以通过request的相关API获得后台类中直接写成:传进来的参数+images/book.xml但是我觉得最好还是写在属性文件里
解决方案十一:
你看一下TOMCAT下面是否有这个文件吧,有时候是Tomcat下面没有这个文件
解决方案十二:
引用8楼purifypipi的回复:

Quote: 引用6楼shixitong的回复:
Quote: 引用5楼purifypipi的回复:
Quote: 引用2楼rui888的回复:
路径对不对额

写绝对路径是没有问题的可以找的到但是相对路径就不可以了怀疑是通过web后走的tomcat的路径所以一直提示找不到文件

能不能把这个路径写在属性文件里?

写在属性文件里是什么意思呢?property?

就是把那个方法中用的路径写在配置文件中,然后再类的方法中再去读那个配置文件取路径,property、xml这些文件都可以
解决方案十三:
引用2楼rui888的回复:

路径对不对额


解决方案十四:
绝对路径,如果是绝对路径对的话,那就可以考虑这个在服务端执行的时候自动拼接的地址是否是你想要的,在来做其他的吧
解决方案十五:
哪位大神能帮我调试一下我的程序啊理论上的东西我试了好多次都没试通啊跪谢啦跪谢啊能力有限帮我调试一下我的代码吧十分感激引用13楼Pa_Java的回复:

绝对路径,如果是绝对路径对的话,那就可以考虑这个在服务端执行的时候自动拼接的地址是否是你想要的,在来做其他的吧

解决方案:
引用7楼shixitong的回复:

现在这个不是servlet,要是servlet还是拼个全路径出来

哪位大神能帮我调试一下我的程序啊理论上的东西我试了好多次都没试通啊跪谢啦跪谢啊能力有限帮我调试一下我的代码吧十分感激
解决方案:
在程序里调用文件,分为几种情况:1.如果这个文件是程序的配置文件,肯定跟着程序,程序部署到哪就跟到哪,这样的文件,如果是部署时不需修改的,可以写在src里的某个包下,经过编译,会进到classes里,然后引用文件的类用XXX.class.getResourceAsStream("/com/xxx/xxx/xxx.ext")这种方式来读取这个文件。如果是部署时需修改的,一般写在WEB-INF下的某个自建目录下,比如WEB-INF/config/xxx,然后程序中写一个取WebRoot的工具类,该类从当前class的物理路径向上查找,直到找到“WEB-INF”后,再向上一级,就是工程的根,然后以后找工程中的任何东西都可以通过这个工具类找到根再加上相对路径。这个根只计算一次就长驻内存,以后直接调用就可以。StringclassPathRoot=WebRootUtil.class.getResource("/").getFile();FileclassPath=newFile(classPathRoot);while(true){classPath=classPath.getParentFile();if(classPath.getName().equals("WEB-INF")){classPath=classPath.getParentFile();break;}}StringwebRoot=classPath.getAbsolutePath();2.如果这个文件是用户生成的文件,比如用户上传,或者是在程序运行中生成的某些文件,一般要通过配置指定一个位置,然后程序通过读取配置来找到这个路径,因为在部署时这个路径通常是要特殊管理的,比如要给特殊的权限,以让程序可以读写这个目录,另外如果是集群多台服务器统一读一个路径,很可能还是一个网络上的位置,而不是本机的某个路径。这时需要通过nfs或rsync等手段把某个目录映射到网络上的某个硬盘位置,以让程序像读本地文件一样读网络上的文件。总而言之,在程序读取文件时,尽量要考虑将来程序部署到不同的环境时的情况,而不是当时能读到就行。
解决方案:
如果你实在非要想知道你怎么能读到那个文件,你就在程序里往./xxx目录下写个文件,然后看看这个xxx目录生成在哪了就行了,一般应该是生成在了tomcat/bin下面了,因为整个程序的启动的地方是在tomcat/bin,你整个程序运行时的当前目录就是tomcat/bin下面,如果你是用eclipse启动了,看看是不是生成在了eclipse的安装路径下了。或者你newFile(".").getAbsolutePath();把这个输出到日志或者控制台,就知道当前路径在哪了。
解决方案:
推荐你用个方法,在你调用的类里面写一个相对路径下的空文件,运行下,看文件生成在什么地方(在tomcat中的位置),然后根据这个位置对你类里面要读取文件的位置进行修改。

时间: 2024-10-04 01:52:06

JSP中调用java类,系统找不到指定文件的相关文章

图片-jsp中调用java方法,方法中文件路径问题

问题描述 jsp中调用java方法,方法中文件路径问题 我在jsp中了写了java代码调用java类的方法,方法中需要在网页下载一张图片保存 OutputStream os = new FileOutputStream(new File("identityCode/checkimage.JPEG")); 我这样写的,然后一直报 :系统找不到文件路径.路径各种都换了 还是不行 解决方案 解决JSP路径问题的方法jsp路径问题解决方法jsp调用js文件中文乱码问题解决方法 解决方案二: 试

电脑安装软件提示系统找不到指定文件怎么解决

  有些用户安装软件的时候提示"系统找不到指定文件",这是怎么回事呢?在使用电脑的过程中难免会碰到一些问题,那么该如何来解决"系统找不到指定文件"这个问题呢?下面小编给大家分享下解决方法. 1.首先使用鼠标右键点击"我的电脑",选择"属性". 2.接着在弹出来的窗口中选择"系统特性"选项,再点击其中的"高级"选项,点击"环境变量"按钮进入"环境变量"

vs2008调试时的怪问题:无法启动程序“http://localhost:3832/aaa/default.aspx”,系统找不到指定文件。

问题描述 vs2008调试时的怪问题:无法启动程序"http://localhost:3832/aaa/default.aspx",系统找不到指定文件.我google了半天没有一个能解决我的问题别人的一个网站,我打开,然后点调试,就出现上面的提示. 解决方案 解决方案二:看看文件的路径default.aspx是不是放在aaa文件夹下解决方案三:你双击托盘里面vs生成的那个asp.net虚拟服务器,看看上面写的url中的端口和你浏览器上的url端口是否一样.我见过这个bug.解决方案四:

android模拟器-启动avd manager的时候,提示“系统找不到指定文件”,怎么办,求大神解答

问题描述 启动avd manager的时候,提示"系统找不到指定文件",怎么办,求大神解答 解决方案 Testbed 提示错误信息"系统找不到指定的文件" 解决方案二: 如果你以前可以使用,现在出现这种问题,估计就是你改了文件名或者目录移动了,确定目标文件是否存在,或重新配置目标路径试试

c++的问题-C++编程问题:系统找不到指定文件(确定是程序的问题)

问题描述 C++编程问题:系统找不到指定文件(确定是程序的问题) 提示系统找不到指定文件,确定是程序的问题,求大神啊! // 链表.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include "windows.h" #include "conio.h" //创建POINT的同义 typedef POINT datatype; typedef struct node { datatype data; s

实用技巧:PHP中调用Java类的两种方法

Java语言功能强大,因此在许多情况下在php中来调用Java的功能将十分有用.在php中调用Java语言有两种方法,一种是使用php中的Java扩展模块,另一种是使用minij2ee应用服务器提供的SJOP协议实现.下面我们来比较一下这两种方法各自的特点. 1.php的Java模块 php发布版中包含一个Java扩展模块,可以用来调用Java对象,例如: <?php$system=new Java("java.lang.System");print "Java ver

在JavaScript中调用Java类和接口的方法_javascript技巧

前言 本文中所有的代码使用 JavaScript 编写,但你也可以用其他兼容 JSR 223 的脚本语言.这些例子可作为脚本文件也可以在交互式 Shell 中一次运行一个语句的方式来运行.在 JavaScript 中访问对象的属性和方法的语法与 Java 语言相同. 本文包含如下几部分: 1.访问 Java 类 为了在 JavaScript 中访问原生类型或者引用 Java 类型,可以调用 Java.type() 函数,该函数根据传入的完整类名返回对应对象的类型.下面代码显示如何获取不同的对象类

怎么实现javascript中调用java类中的方法

问题描述 body中部分代码如:<center><font size="4" color="red">吊灯</font> <input type="button" id="diaodeng" value=<%=state[0]%> onclick="dianji1()"><br><br><br><br>

提示“系统找不到指定文件夹”怎么回事?

  第一种情况是可能是是有的软件卸载程序不完善或者使用者.直接删除程序安装目录造成的? 解决方法:这样可以通过尝试手动删除的方式来解决故障.直接先用鼠标点击"开始--运行--运行输入regedit"命令,这样即可打开注册表编辑器对话框,鼠标依次定位到 HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun.在该项右边窗口中找到该文件行,然后单击鼠标右键,直接删除文件就可以. 关于ATI先看提示找不到文件? 第二种情况ATI