Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsp 为旧版Tomcat应用程序指定WEB-INF的位置_Jsp_Tomcat_Configuration - Fatal编程技术网

Jsp 为旧版Tomcat应用程序指定WEB-INF的位置

Jsp 为旧版Tomcat应用程序指定WEB-INF的位置,jsp,tomcat,configuration,Jsp,Tomcat,Configuration,我正在尝试为一个遗留的Apache/Tomcat应用程序构建一个测试设置。老实说,我不确定它是否是一个“应用程序”。它是碰巧位于某个目录中的JSP的集合 JSP正在正确显示。问题是找不到WEB-INF文件夹中的classes文件夹-我收到NoClassDefFoundError异常 更复杂的是,有两个“应用程序”,它们共享一个WEB-INF: 4 drwxr-xr-x 8 root root 4096 Dec 2 09:38 thing1 4 drwxr-xr-x

我正在尝试为一个遗留的Apache/Tomcat应用程序构建一个测试设置。老实说,我不确定它是否是一个“应用程序”。它是碰巧位于某个目录中的JSP的集合

JSP正在正确显示。问题是找不到WEB-INF文件夹中的classes文件夹-我收到NoClassDefFoundError异常

更复杂的是,有两个“应用程序”,它们共享一个WEB-INF:

4 drwxr-xr-x    8 root     root         4096 Dec  2 09:38 thing1
4 drwxr-xr-x    8 root     root         8192 Dec  2 09:38 thing2
4 drwxr-xr-x    8 root     root         4096 Dec  2 09:38 WEB-INF
因此,在这个为您的sanity进行清理的示例中,我们看到了两个“应用程序”和共享的WEB-INF文件夹

一个有效的URL是http://mysite/thing1/index.jsp 但是,当我们尝试从该页面登录时,会出现NoClassDef错误

下面是server.xml文件的相关部分。因此,前面提到的index.jsp文件的实际路径是tony/ROOT/thing1/index.jsp


111.111.111.111
我的问题是,我必须如何配置Tomcat,以便thing1和Thing2在lib和class文件夹中使用WEB-INF?这些“应用程序”未部署为war文件


(注意-制作制作制作盒的副本会很困难-那里有很多东西在运行。我正在尝试精简它,为一些应用程序创建一个测试环境。)

web应用程序必须具有以下结构:

tomcat/webapps/appname
tomcat/webapps/appname/*.jsp
tomcat/webapps/appname/WEB-INF
tomcat/webapps/appname/WEB-INF/lib
tomcat/webapps/appname/WEB-INF/classes

因此,这种方式应该可以工作,而不需要任何额外的xml配置

事实上,这些东西都在那里。嗯,那么webapps目录下的目录就是“应用程序”了?这样定义了WEB-INF的位置,如果我们在进行典型的安装,那么实际上是一个具有两个子文件夹的应用程序,而不是两个应用程序。根据
NoClassDefFoundError
,类路径中缺少哪个类?你知道松散的
.class
文件应该放在
/WEB-INF/classes
中,而打包在
.jar
文件中的类应该放在
/WEB-INF/lib
中吗?知道。类文件位于WEB-INF/classes中,JAR位于WEB-INF/lib中。但是,根据其包名,该类位于类的子目录中。它就在那儿,Tomcat就是看不见。特权没有问题。我根据@Bozho下面的评论将文件从tomcat/tony/ROOT移动到了tomcat/webapps。现在我得到了以下不同的错误:org.apache.jasper.JasperException:无法为JSP编译类:在生成的java文件的第7行发生了错误。只能导入类型。rpsi.rpsiMeWeb解析为一个包,即index.jsp。在我将代码移动到webapps之前,它已正确编译,因此这只是一个配置问题。@BalusC当WEB-INF直接位于webapps下(并与我的thing1和thing2文件夹并行)时,我一点运气都没有。当我将WEB-INF移动到webapps/thing1下时,thing1开始表现得更好。webapps下的目录是否具有魔力并定义了应用程序?此JSP编译错误是由
NoClassDefFoundError
引起的。实际上,您应该将webapp放在
Tomcat/webapps/ROOT
tomcat/webapps/appname
tomcat/webapps/appname/*.jsp
tomcat/webapps/appname/WEB-INF
tomcat/webapps/appname/WEB-INF/lib
tomcat/webapps/appname/WEB-INF/classes