打印报错:找不到类applet.HtmlPrintApplet.class的几种情况

本文介绍了润乾报表打印过程中可能出现的问题及解决方法,包括缺少必要的Applet包、jar包不匹配、缺失特定jar包以及因应用使用代理导致的问题。


1 应用中没有打印的Applet包

检查应用中根目录下是否有runqianReport4Applet.jar包;这里要注意的是:包runqianReport4Applet.jar是在应用的根目录下,很多客户容易将它放在了\WEB-INF\lib\下。

2 与report4.jar包不匹配

将最新的report4.jar包和runqianReport4Applet.jar包,在本地测试,打印正常,再将这两个包发给用户。

3 缺失相应的包

检查应用\WEB-INF\lib\目录下的润乾的jar,是否有barcode.jar,jai_code.jar,如果没有,将本地测试正常的这两个包发给用户。

4 应用中使用了代理

以上3种情况排除后,还报这个错,可能是应用中使用了代理;

让用户直接ip+port访问应用,打印,看是否正常,能正常打印就是由使用代理引起的;

解决方法:

在应用\WEB-INF\下reportConfig.xml中的配置项:

<config>
<name>appUrlPrefix</name>
<value> http://192.168.0.132:8080/demo</value>
</config>

<config>
<name>appUrlPrefix</name>
<value> /APPMAP</value>
</config>

(注:http://192.168.0.132:8080/demo,根据具体应用做相应修改)

在启动远程设计器时,也可能报这个错,这时参考文档《远程设计部署手册》

常见的情况,需要做如下修改:

1在designer.html文件里,删除

<object classid=”clsid:8AD9C840-044E-11D1-B3E9-00805F499D93″
……>
</object>

2在启动报表模板时报这个错,则在jnlp配置启动参数:<argument>/../../xx.raq</argument>

快逸报表使用 在网上个很多资料,也按着资料去尝试了多次,最终都以失败告终,也发现大部分文章都是拷贝粘贴来的,真不知道那些作者怎么想的,为什么不亲身测试后再贴到自己博客里呢,好了,废话少说,经过那么多次失败,最终亲测成功,特别整理发表,为那些刚接触快逸报表的同胞们省去不必要浪费的时间.. 下载并安装快逸报表软件工具 下载安装不需要过多赘述,跟安装日常软件没什么区别,值得提到的是必须先安装好环境, 先安装 JDK,还有Tomcat 相关的配置步骤网上很多资料,相信不会难倒读者.笔者使用快逸报表版本为4.2.20,JDK1.5,Tomcat 6.0.. 报表设计 (1)关于授权 打开报表设计器,如果提示授权的话,你可以到安装目录下到,笔者安装在了C盘, 所以目录如下C:\ProgramFiles\quieeReport\webapps\quiee\WEB-INF\classes 可以看到相关的授权. (2)配置数据源 打开设计器之后, 安装后打开报表设计器,选择配置-数据源-新建-关系数据库,开始配置数据源,笔者用的是mysql,以mysql举例: 其中关键位置如下: 数据源名称要记住,因为在部署的时候,配置数据库时名字要和这保持一致.数据库型选择相应的型,数据源URL默认不是本机,需要修改,当然如果在其他机器上需要填写相应的IP地址,后面填写相应的数据库名字.下面填写数据用户名和密码.完成之后回到数据源窗口,选择刚创建的数据源,点击连接,数据源变色说明连接成功。.关闭窗口. (3)配置数据集创建报表 选择文件-新建报表,打开新建报表向导,填写数据源,下一步 注意数据源的名字也要保持一致,点击 下一步,按着提示进行下一步就可以, 最后点击生成网格报表,报表就生成了. 报表的表头可以修改为中文 完成之后,启动快逸报表的服务,将报表保存发布. 四个图标左边第三个是进行发布的,点击会提示进行保存报表,按提示进行保存.之后可以点击IE图标进行预览.. 在J2EE中部署快逸报表 在已有的 J2EE 项目中使用刚才创建的报表,需要如下步骤: (1) 导入 jar 包和相关文件 (a)将快逸报表安装目录\quieeReport\webapps\quiee\WEB-INF\lib中的 jar 包导入项目,并且导入所需要的mysql驱动包. (b)将\quieeReport\webapps\quiee\WEB-INF 目录下的 reportConfig.xml,runqianReport4.tld,runqianReportLog.properties 复制到项目的 WEB-INF 目录 (c)将\quieeReport\webapps\quiee 目录下的 j2re-1_4_1-windows-i586-i.exe,Myerror.jsp,myInputError.jsp, runqianReport4Applet.jar 和 images 目录(用于工具按 钮的图片可自选)复制到项目的 WebRoot 目录下。 (2) 修改web.xml文件 在 web.xml 文件中增加如下内容: <servlet> <servlet-name>SetContextServlet</servlet-name> <servlet-class>com.runqian.util.webutil.SetContextServlet</servlet-class> <load-on-startup>2</load-on-startup> </servlet> <servlet> <servlet-name>reportServlet</servlet-name> <servlet-class>com.runqian.report4.view.ReportServlet</servlet-class> <init-param>     <param-name>configFile</param-name> <param-value>/WEB-INF/reportConfig.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>reportServlet</servlet-name> <url-pattern>/reportServlet</url-pattern> </servlet-mapping> (3) 创建jsp文件 可以直接使用\quieeReport\webapps\quiee\reportJsp目录下的 showReport.jsp和 toolbar.jsp 文件。其中 showReport.jsp 用于显示报表,toolbar.jsp 用于显示工具按钮。 (4) 在项目中导入报表文件 在上面发布报表的路径下到报表文件,将生成的.raq 报表文件导入项目。 (5) 添加授权文件 复制quieeReport\webapps\quiee\WEB-INF\classes目录下的授权文件,根据使用的操作系统进行选择, 到项目的 WebRoot 目录, 可能需要修改 reportConfig.xml 文件中的部分内容. 如果你用的不是window系统,更改成与您对应的授权的文件.特别注意的是”/”反斜杠符号 ,拷贝过来的文件里原本是没有的 (6) 修改reportConfig.xml文件 在其中添加如下配置内容,主要用于数据库的连接,需要主要的地方是name参数,需要跟报表文件的数据源名称一致. <!-- 配置快逸加载数据时候的datasource --> <jdbc-ds-configs> <jdbc-ds-config> <name>mysql</name> <db-type>mysql</db-type> <connection-url> jdbc:mysql://localhost:3306/test </connection-url> <driver-class>com.mysql.jdbc.Driver</driver-class> <user-name>root</user-name> <password>123</password> <db-charset>gbk</db-charset> <client-charset>gbk</client-charset> <extend-properties></extend-properties> </jdbc-ds-config> </jdbc-ds-configs> 注意的地方: 这个地方一定要和制作报表时候的数据源名字一致, (7) 访问报表 发布上述 J2EE 项目,启动 tomcat,访问报表的 url 地址 为: 项目名称/reportJsp/showReport.jsp?raq=/报表名称.raq 就可以看到我之前做的报表,这个时候很多人会发现出现不到报表配置文件的错误,而且这个问题也困扰了我很久,网上了资料,按其操作并没有解决,经过又查资料,终于到问题根源,在于jar包的问题,其中一个很重要的jar包---webutil.jar,快逸报表自身带的jar是不能用的,本人所用版本这个jar包为3.6kb,替换成一个网上打一个新的4.05kb大小的webutil.jar后,问题解决了.
<think>好的,我现在需要解决用户关于Java中ClassNotFoundException异常的问题。首先,我得理解这个异常通常是什么原因引起的。根据用户提供的引用内容,比如引用[1]中的例子,出现这个异常是因为加载器AppClassLoader不到指定的org.ph.javaee.training5.ClassA。这可能涉及到路径配置的问题,或者是名拼写错误,或者是依赖缺失。 接下来,用户提到了AppletClassLoader,这让我想到Applet环境下可能出现的加载问题。Applet有自己特定的加载机制,可能需要检查代码库或网络策略是否允许加载该。同时,用户提到了findClass和loadClass方法,这两个是ClassLoader中的关键方法,如果自定义加载器实现有误,也可能导致此异常。 我需要按照用户的结构要求,分步骤解释解决方案。首先应该检查路径是否正确,确保所需的文件或jar包在路径中。然后检查名是否正确,包括包名和大小写。接着,如果是依赖管理工具如Maven或Gradle,需要确认依赖是否正确添加并已下载。另外,动态加载情况,如使用Class.forName时,要确认驱动是否在路径中。 对于Applet情况,可能需要检查codebase参数是否正确,或者安全设置是否阻止了的加载。此外,自定义加载器的问题可能需要检查findClass和loadClass的实现是否正确,是否委派给父加载器处理。 最后,生成相关问题时要涵盖常见的解决步骤,可能的误区和相关技术点,比如加载机制、依赖管理、动态加载等,确保用户能全面理解问题所在及解决方法。</think>### Java.lang.ClassNotFoundException 解决方案 #### 1. 核心问题分析 该异常表示 **加载器未到指定**,常见场景包括: - 文件未包含在路径(Classpath)中[^1][^2] - 名拼写错误(包括包名和大小写) - 动态加载时未正确配置依赖(如JDBC驱动) - 自定义加载器未正确处理加载逻辑 #### 2. 分步解决方案 **步骤1:验证路径配置** ```bash # 检查运行时路径 java -cp "your_classpath" YourMainClass # Maven项目验证依赖树 mvn dependency:tree ``` - 确保包含目标的JAR/WAR文件在路径中[^1] - 检查IDE(如Eclipse/IntelliJ)的Build Path配置 **步骤2:检查名准确性** ```java // 注意包名层级和大小写 Class.forName("com.example.User"); // 正确 Class.forName("Com.Example.USER"); // 错误(大小写敏感) ``` **步骤3:处理动态加载场景** ```java // JDBC驱动加载示例 try { Class.forName("com.mysql.cj.jdbc.Driver"); } catch (ClassNotFoundException e) { System.out.println("请添加mysql-connector-java依赖"); } ``` **步骤4:检查加载器实现**(针对自定义加载器) ```java public class CustomLoader extends ClassLoader { @Override protected Class<?> findClass(String name) throws ClassNotFoundException { byte[] classData = loadClassData(name); // 自定义加载逻辑 return defineClass(name, classData, 0, classData.length); } // 必须实现完整的委派机制 @Override public Class<?> loadClass(String name) throws ClassNotFoundException { if (name.startsWith("com.special.")) { return findClass(name); } return super.loadClass(name); } } ``` **步骤5:Applet环境特殊处理** ```html <applet code="com.example.MyApplet.class" archive="myapplet.jar" codebase="http://example.com/classes/"> </applet> ``` - 确认`codebase`指向正确位置 - 检查JAR文件签名和安全策略 #### 3. 预防措施 1. 使用Maven/Gradle管理依赖 2. 单元测试中加入存在性检查 3. 部署时验证依赖完整性 ```bash # 检查JAR内容 jar tf yourlib.jar | grep ClassName ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值