1

我创建了一个项目,它在运行时动态编写、编译和实例化一个新的 java 类,当我在命令行或 eclipse 中运行它时它工作得很好。最终我的目标是创造一种与 JSP 非常相似的技术;用户提供了一个“模板”文件,我将它翻译成一个 java 类并实例化该类。我的问题是在 web 应用程序的上下文中我似乎无法实例化新编译的类。

我的问题的核心是我不知道将编译的类放在哪里,以便我可以立即实例化它们。

这是我的目标:

  1. 这将是其他开发人员的通用工具,因此它不能特定于我的文件系统或我的 java 容器。
  2. 如果用户从容器中取消部署他们的 webapp,它也应该删除这些生成的类文件。

这是我的想法,但我以前从未做过这样的事情:

我是否将这些生成的类放入类路径的现有条目之一中,如果是的话,是哪一个?我应该让用户提供一个路径,然后我的库会将此路径添加到类路径中吗?也许他们提供了一条路径,而我只是使用自定义类加载器从该路径中读取它们?用户已经提供了他们的“模板”的路径(例如 WEB-INF/模板)所以我应该把我编译的类和原始模板放在一起吗?我的理解是,翻译后的 JSP 文件存储在特定于该 java 容器的专有位置,因此我无法跟随 JSP 文件的脚步。

啊!我不堪重负!也许有一个开源的java库可以做类似的事情,我可以研究它来确定它把生成的文件放在哪里?

4

1 回答 1

0

基本上,您需要定义自己的类加载器并从那里进行加载。

请参阅如何在 Java 中更改 CLASSPATH?

于 2013-05-31T08:48:33.250 回答