Java tomcat如何定位不属于app libs中任何jar的类
在我们的应用程序(applet)中,如果找到所需的jar之一,我希望启用导出功能。我不想添加这个jar小程序引用以避免下载大小 我正在将Class.forName与其中一个classed一起使用,以检查特定的是否可用。在local machine Class.forName中,调用ret运行一个实例,尽管jar不在任何类路径中Java tomcat如何定位不属于app libs中任何jar的类,java,applet,Java,Applet,在我们的应用程序(applet)中,如果找到所需的jar之一,我希望启用导出功能。我不想添加这个jar小程序引用以避免下载大小 我正在将Class.forName与其中一个classed一起使用,以检查特定的是否可用。在local machine Class.forName中,调用ret运行一个实例,尽管jar不在任何类路径中 有人能解释tomcat类发现机制吗。根据您对小程序的描述,我看不到任何选项,只有在小程序在客户端运行时将jar文件包含在小程序标记中 您可以为jar文件设置HTTP缓存头
有人能解释tomcat类发现机制吗。根据您对小程序的描述,我看不到任何选项,只有在小程序在客户端运行时将jar文件包含在小程序标记中 您可以为jar文件设置HTTP缓存头,以允许客户端浏览器缓存它们,因此,您只需支付一次下载费用 对于经常更改的jar文件,请在jar文件名中包含一个版本号,以避免相同名称但内容不同的jar出现客户端缓存问题 编辑:尽管问题是关于tomcat发现罐子的方式,但我认为问题的根源在其他地方 在服务器端的Tomcat 6中,Tomcat在$Tomcat_HOME/lib和WEB-INF/lib目录中搜索jar文件。如果在那里添加或删除文件,通常需要重新启动整个Tomcat实例 Edit2:
您查找jar文件的经验可能是因为您从webapp所在的同一目录运行HTML页面,或者jar文件位于公共位置或公共类路径位置(例如在JRE/lib/ext目录中)。我很难理解您的问题。如果满足特定的运行时条件,是否尝试将类下载到小程序中?从6u10开始,我相信您可以使用动态下载扩展。回到1.2版,您可以使用
URLCLassLoader.newInstance
,尽管这在缓存端并不太好。小程序运行在客户端(用户浏览器内部),而不是在Tomcat web服务器上,因此这与Tomcat无关
您需要研究小程序类加载器是如何工作的
通常,他们会尝试从web服务器下载类,下载的Url与获取小程序的Url相同。因此,如果小程序处于
并且需要foo.bar.MyClass类,如果在本地找不到它,它将尝试下载。这个问题不是很清楚。Tomcat和Applet在类加载方面完全不同。小程序有一个安全管理器,可以防止某些事情,例如加载任意类。他们必须从web服务器下载这些类。web服务器不必是tomcat甚至Java;小程序文件只是通过普通HTTP提供的文件 至于雄猫。特别是,Tomcat使用类加载器的继承权来查找类。有几个众所周知的自动加载jar的位置,例如
$CATALINA_HOME/lib
或$CATALINA_HOME/shared/lib
。它还加载web应用程序自己的JAR和类。类装入器的工作方式如下:
原因:前面引用的其他库(JAR)中有一个具有我要查找的类 谢谢你的回答;我的问题是“tomcat如何在我的本地机器上定位类”,尽管它是app/lib的一部分,并且在applet参考中提到过。是的,我也不能完全理解这个问题。