我正在尝试理解在Tomcat中运行时遇到的JSR223脚本问题。我正在使用Java脚本引擎,但我相信这个问题更普遍适用(我也看到了类似的参考JS引擎问题)。我传递给评估的脚本将其作为第一行:
import javax.servlet.http.*;
此操作失败并显示以下消息:
package javax.servlet.http does not exist
因此,深入研究Java脚本引擎的源代码,我知道为什么会这样 - 它将我的脚本文本传递给JavaCompiler,指定它从java.class.path
检索的类路径,但是因为Tomcat执行了它就类加载器和类路径而言,自己的事情是唯一包含的是$CATALINA_HOME/bin/bootstrap.jar
。
可以覆盖脚本引擎将使用的类路径,但那只会向我展示我的下一个问题 - 如何在运行时发现Tomcat正在使用的claspath?
似乎我必须在这里遗漏一些明显的东西,因为据我所知,任何试图在Web应用程序中进行任何严肃脚本编写的人都会发生这种情况,但我已经搜索了这个领域的讨论时间,甚至找不到任何人问这个问题......