- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这看起来像是一个已解决的老问题,但不幸的是我找不到好的引用资料。我有一个使用 Javaassist 的 Java 应用程序。在我将它升级到 webstart 应用程序之前,它工作正常。现在 Javaassist 给了我一个 classNotFoundException。不过,该类(class)肯定在类(class)路径中。
我发现这篇相关帖子 https://community.jboss.org/message/302408 有点旧,我无法解码它。有人可以帮我一下吗?
谢谢
这是代码片段:
ctClasses = new HashMap<String, CtClass>();
classPool = ClassPool.getDefault();
try {
ctEntity = classPool.get("org.myclass");
} catch (NotFoundException e) {
logger.error("Could not find entity class, this should not happen");
throw new RuntimeException("Could not find Entity class",e);
}
堆栈跟踪中没有任何内容。
java.lang.RuntimeException: Could not find Entity class
at ca.cbc.panacea.metadata.JavassistClassGeneratorImpl.<init>(JavassistClassGeneratorImpl.java:32)
at ca.cbc.panacea.metadata.ClassGeneratorFactory.getDefaultClassGenerator(ClassGeneratorFactory.java:12)
at ca.cbc.panacea.metadata.ClassCreator.<init>(ClassCreator.java:30)
at ca.cbc.panacea.Panacea.digestMappingFile(Panacea.java:75)
at ca.cbc.panacea.console.PanaceaConsole.validateMappingFile(PanaceaConsole.java:46)
at ca.cbc.panacea.console.PanaceaConsoleUI.actionPerformed(PanaceaConsoleUI.java:132)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2028)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2351)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6373)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6138)
at java.awt.Container.processEvent(Container.java:2085)
at java.awt.Component.dispatchEventImpl(Component.java:4735)
at java.awt.Container.dispatchEventImpl(Container.java:2143)
at java.awt.Component.dispatchEvent(Component.java:4565)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4621)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4282)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4212)
at java.awt.Container.dispatchEventImpl(Container.java:2129)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4565)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:679)
at java.awt.EventQueue.access$000(EventQueue.java:85)
at java.awt.EventQueue$1.run(EventQueue.java:638)
at java.awt.EventQueue$1.run(EventQueue.java:636)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
at java.awt.EventQueue$2.run(EventQueue.java:652)
at java.awt.EventQueue$2.run(EventQueue.java:650)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:649)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Caused by: javassist.NotFoundException: ca.cbc.panacea.metadata.Entity
at javassist.ClassPool.get(ClassPool.java:436)
at ca.cbc.panacea.metadata.JavassistClassGeneratorImpl.<init> (JavassistClassGeneratorImpl.java:29)
问题实际上是ClassLoader。 JNLP 使用与 java 命令行不同的类加载器。问题是如何协调 JNLP 类加载器与 Javassist。
最佳答案
关键是设置 ClassPool
以查看应用程序类的类加载器。这可以通过向 ClassPool 添加类路径来完成:
ctClasses = new HashMap<String, CtClass>();
classPool = ClassPool.getDefault();
//Add the classloader of your application's classes so Javassist can find them
ClassLoader loader = org.MyClass.class.getClassLoader();
pool.appendClassPath(new LoaderClassPath(loader));
try {
ctEntity = classPool.get("org.MyClass");
} catch (NotFoundException e) {
logger.error("Could not find entity class, this should not happen");
throw new RuntimeException("Could not find Entity class",e);
}
您需要为任何不从系统类加载器加载其类的应用程序自定义类池的类路径,例如 Web 启动应用程序、Eclipse 插件和在 Java EE 容器下运行的应用程序。
更多详细信息在 Javassist tutorial 的类搜索路径 部分下.
关于Javassist 和 Webstart,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8843714/
我正在开发一款使用 LWJGL 的游戏,因此需要特定于每个平台的 native 库。上 this page ,作者展示了如何使用使用 Java Webstart 标记以包含包含适当 native 库的
非常感谢所有愿意花时间阅读的人。 我正在努力制作一个 webstart Swing 1.4.2_12 应用程序以使用 java webstart 1.6.0_29 启动。 场景如下: 所有流量都通过
我的 WebStart 小程序无法在两个浏览器或两个浏览器选项卡/窗口中工作。因此,我不想允许运行我的小程序的多个实例。 有谁知道一种方法可以防止小程序的第二个实例运行或检查我的小程序的一个实例在新的
我习惯于向独立的 Java 应用程序添加日志记录,并使用 log4j 和 sl4j 将日志写入文件。我正在将一些应用程序移动到 Java Web 启动格式,但我不清楚执行日志记录以监视应用程序行为的最
有没有办法反编译java webstart应用程序? 最佳答案 启动应用程序,然后从 Webstart 缓存中获取 JAR。像任何其他 Java 应用程序一样继续反编译。 关于java webstar
我有一个使用 webstart 的 EJB 3.0 项目,我正在尝试将其作为 WAR 部署到 JBoss AS 7.1.1。我可以很好地访问 html 页面,但是当我单击 webstart 链接时,它
我们有一个 webstart 应用程序,在启动后使用 EJB 连接到 jboss 服务器。我们最近将此服务器迁移到 jboss5 并更新了连接到它的 webstart 应用程序。现在我们遇到了一个问题
我有一个 logging.properties 文件,我在运行时加载到我的 java 应用程序中: final InputStream logFileInputStream= this.getClas
我必须通过 Java Webstart 部署 Java 应用程序。 Webstart 下载所需的应用程序 jar 和库 jar,然后在下载完所有内容后,应用程序启动前会有 50 秒的延迟。 直接在计算
我将 Java WebStart 与我正在开发的这个简单应用程序一起使用,我还制作了它,以便它能够检查最新版本的 jar 文件的更新。尽管在运行它时,我收到一条错误消息,指出服务器缺少版本响应。 下面
我正在使用 javaws 在 OS X 10.5.7、Java(TM) SE 运行时环境(内部版本 1.6.0_13-b03-211)中运行应用程序,并且命令行参数似乎在 OS X 中被破坏。我在 L
我需要将动态生成的参数( token )传递给 Web 启动应用程序。问题是,除非应用程序之前被 JWS 缓存,否则参数不会被传递。我试过这样传递它: 并使用 System.getProperty
我有一个在办公室使用的小型 javafx2 应用程序。有些人从 Firefox 运行它,有些人将它作为桌面应用程序运行。 Webstart 很棒。 目前的做法是我在jnlp文件中添加了这个:
这看起来像是一个已解决的老问题,但不幸的是我找不到好的引用资料。我有一个使用 Javaassist 的 Java 应用程序。在我将它升级到 webstart 应用程序之前,它工作正常。现在 Javaa
我有一个带有许多依赖 jar(大约 20 个)的 java webstart 应用程序,它作为独立应用程序在开发环境中快速启动。然而,当它部署在 java webstart 中时,启动时间很慢(1 分
Java Webstart 命令行中有什么选项可以跳过安全检查?这仅用于测试目的。 javaws myfile.jar 最佳答案 我相信 Sun JDK 中有两个未记录的命令行选项:-secure(讽
有没有办法将 Stdin 和 Stdout/Stderr 路由到 java webstart 中的另一个进程?我想做的是让 java webstart 应用程序与桌面上的其他进程进行通信。理想情况下,
我一直在尝试让 webstart 在内存不足时转储到堆转储。 我知道 jmap/jconsole 的做法,但我真正想做的是将选项添加到 jnlp 文件并尝试了以下选项。 j2se version="1
我如何在 java webstart .jnlp 文件中指定我的一些 jar 覆盖 JRE 内置实现?就像常规应用程序上认可的 lib 属性一样。 最佳答案 似乎没有办法在 web start 中定义
如何避免Java webstart 不缓存jar 文件? 在开发中,我想避免在 java webstart 中进行缓存。在我的 lanuch.jnlp 中,如果我每次都更改 jar 版本号,它会强制下
我是一名优秀的程序员,十分优秀!