1

我在网络应用程序中工作。http://localhost:8080/examples/README.txt使用的服务器是 Apache Tomcat 6。我在运行服务器后尝试从 mylocalhost 访问资源。但我无法访问显示在 Eclipse 中找不到错误消息文件的资源。但是如果我在链接上按 ctrl+左键单击,资源就会在 Eclipse 工作区中打开。我无需通过服务器即可访问的相同资源,即转到路径C:\Program Files (x86)\apache-tomcat-6.0.35\bin并单击Startup.bat。通过这种方式,我可以打开文件。我可以知道不通过 Eclipse 访问这些资源的原因是什么吗?

url = new URL("http://localhost:8080/examples/README.txt");
con = url.openConnection(); // open the url connection.
dis = new DataInputStream(con.getInputStream()); 
4

1 回答 1

1

这是我从前面提到的博客中引用的内容

Tomcat 实际上由两个方面组成:可共享代码库(CATALINA_HOME)和每个实例部分(CATALINA_BASE)。这允许使用一个代码库在单个服务器上运行多个 Tomcat 副本。大多数时候,CATALINA_HOME 和 CATALINA_BASE 是相同的值,因为通常只使用给定版本的 Tomcat 的一个副本——至少在开发人员的机器上是这样。

但是,当您使用 Eclipse Servers 工具创建 Tomcat 服务器时,它会秘密地创建自己的 CATALINA_BASE,复制选定的文件——并且仅将这些文件复制到插件拥有的目录中。

我被烫伤了。我在 CATALINA_HOME 中保留了自己的文件,并在 server.xml 中使用了对它的相对引用。该文件没有复制,Tomcat 没有启动干净。

最简单的解决方案是编辑 server.xml 并将相对路径替换为绝对路径,以便复制的配置能够找到我的文件的原始(在这种情况下是唯一的)副本。

然而,显然 CATALINA_BASE 数据的复制仅在您创建新的服务器定义时发生。我不得不从 Eclipse 中删除旧的服务器定义并创建一个新的来进行更改。

我从这篇文章中相信 eclipse 服务器只复制选定的文件,并且您的文件没有被复制。看看这篇文章,想想这对你的问题是否有意义。本

于 2012-09-17T11:12:16.457 回答