我完全糊涂了。我有一个带有一堆自定义 JAVA 类的 jsp 应用程序。到目前为止,我已经能够在开发环境中进行开发,然后将我的 JAVA 类、JSP 文件或我的数据库条目从开发转移到生产。(两个不同的服务器。)
几天前,我所有的 JSP 文件都开始抛出编译错误。我对一些单元做了一些小改动,但不是 JSP 文件。所以我重新启动了Tomcat并再次尝试。我重新启动了 Apache 和 Tomcat 并再次尝试。我从生产服务器复制了类,重新启动了 Tomcat 并再次尝试。我一直在开发服务器中遇到错误。(几个月来我没有对其配置进行任何更改。)
所以我创建了一个简单的测试应用程序,它只通过它们的构造函数启动几个类。它在开发环境中失败(无论是旧类还是新类),但在生产环境中完美运行。就好像编译器在获取我的单位定义时使用的 CLASS 文件 (WEB-INF/classes/booknowservices/*.class) 之外的其他东西。
例如测试三个构造函数:
/* --------- constructor definitions from JAVA source -----
database: Constructor:
public BKDataServices (String currentHost)
utilities: Constructor:
public BKUtil (BKDataServices thisdatabase)
textservices: Constructor:
public BKTextServices(BKDataServices thisdatabase, BKUtil thisutilities)
--------------- */
BKDataServices database = new BKDataServices(serverName);
BKUtil utilities = new BKUtil(database);
BKTextServices pagetext = new BKTextServices(database,utilities);
产生编译错误
构造函数 BKTextServices(BKDataServices, BKUtil) 未定义
似乎 BKUtil 的底层定义可能是罪魁祸首 - 当我尝试将它作为参数传递时,我也会收到错误:
// Establish the link between the database class and the utilities class.
database.setUtilities(utilities);
database.setUtilities((booknowservices.BKUtil)utilities);
BKDataServices 类型中的方法 setUtilities(BKUtil) 不适用于参数 (BKUtil) 无法从 booknowservices.BKUtil 转换为 booknowservices.BKUtil
由于生产中一切正常(包括测试),我并没有完全停止,但我想备份开发系统,以便我可以自信地更新生产服务器。
任何有关如何诊断此问题的想法将不胜感激。
我创建了一个 CompileTest.jsp 来演示该问题。我还没有创建“空”类来分享,但如果需要我会这样做。
谢谢,
戴夫博士