我目前正在尝试将类加载到我的应用程序中,这样我就可以过滤掉那些不包含任何test/@test
-方法的类。我希望以后在我的应用程序中运行这些测试。
到目前为止,一切都很好-除了我正在使用的URLClassLoader
(或者可能是任何ClassLoader
)似乎没有实际重新加载位于我的应用程序类路径上的类。
更准确地说,我的应用程序的用户首先选择一些. java
源文件。然后将它们复制到临时位置,并将许多正则表达式匹配/替换对应用于原始源文件的副本。接下来,拷贝被编译,然后我想把那些编译的. class
-文件加载到我的应用程序中,这样我就可以把它们作为测试运行了。
在大多数情况下,这是理想的。
不幸的是,如果任何选定文件的完全限定类名(FQCN)与作为此应用程序一部分的类的FQCN相同(例如此应用程序的测试),类加载器
忽略指定的路径(到%temp%\myfolder\
)以及位于此处的类文件的(更新)版本,而是使用已经存在/加载的类版本。
经过一些研究,根据文档(强调我的),这种行为是可以预期的:
•ClassLoader中的loadClass方法在调用加载类时按顺序执行以下任务:
-如果类已加载,则返回该类
-否则,它会将新类的搜索委托给父类加载器
-如果父类装入器找不到该类,loadClass将调用findClass方法查找并装入该类。
我尝试使用findClass
,但不幸的是它不可见。
类加载器首先委托给它的父类加载器,这是它确定“类是否已经加载”的方式。如果您想强制一个类加载器加载一个新类,一种方法是在链中插入另一个无法加载/查找相同类的类加载器。非常快速,不完整的例子:
class FirewallLoader extends ClassLoader {
public FirewallLoader(ClassLoader parent) {
super(parent);
}
public loadClass(String name, boolean resolve) {
if (name.equals("some.class.Xyz")) {
throw ClassNotFoundException();
}
super.loadClass(name, resolve);
}
}
您将“FirewallLoader”设为父类或URLClassLoader,然后URLClassLoader将加载防火墙装入器过滤掉的任何类的新版本。
在服务器迁移过程中,一个新的nginx配置缺少缓存控制指令。因此,我们最终得到了缓存的,这对我们的SPA非常不利,如果我们部署新代码,它将不再刷新。我们需要index.html不被缓存。 这是我们的(不好的)nginx配置,几天来一直在线: 我们修复了我们的配置: 问题 过去几天内访问过我们网页的客户端缓存了一个旧索引。html。我们如何强制他们的浏览器删除缓存的?
问题内容: 我有一个页面正在从第三方(新闻提要)加载脚本。脚本的url在加载时动态分配(根据第三方代码)。 然后从中加载的脚本创建并加载具有新闻提要中各种内容的元素,并以漂亮的格式等将元素加载到其中(传入ID“ div1287”,以便脚本知道在何处加载内容)。 唯一的问题是,它只会加载一次。我希望它每n秒重新加载一次(从而显示新内容)。 所以,我想我会尝试一下: div清除后,我得到警报,但是没有
问题内容: 我会尽力解释这一点。 我有一个应用程序可以在页面上显示50多个项目。用户可以单击单个项目,然后转到页面以更新项目信息。一切工作正常,除了在用户完成更新单个项目信息并在浏览器上单击“后退”按钮到上一个按钮之后。旧项目信息(更新前)仍然存在。用户必须单击刷新才能查看更新的信息。不错,但我希望提供更好的用户体验。有解决这个问题的主意吗?非常感谢。 问题答案: 我认为您必须使用JS才能使此工作
问题内容: 背景: 我有一个MainTest类,其中包含许多按钮,每个按钮都实例化我正在编码/测试的类。我希望这些类的代码/测试周期更快,并希望每分钟几次快速查看更改的效果。稳定的MainTest大约需要20秒的加载时间,如果我实例化的类中的每个更改都不需要重新加载它,这将不是问题。我想一次加载MainTest,当它实例化另一个类时,我们多次调用它为ChildTest(通过按钮事件),它应该重新加
使用Ionic框架在登录/注销时完成清除历史记录和重新加载页面后 我想知道同样的问题,但对于ionic2使用typecript。 在登录和注销时,我需要重新加载应用程序。ts,因为有些类在构造上运行库。 它基本上是重定向到家庭并重新加载。
问题内容: 我正在使用Ionic Framework开发应用程序,并且有多个视图。路由名称是 app.view1 和 app.view2 。我使用控制器切换到下一个视图,当我单击返回时,app.view1的控制器不再执行,这在我的应用程序中非常重要。 请告诉我如何在每次路由到控制器时执行它。 问题答案: Ionic缓存视图以提高性能。它使用的功能。 Ionic最多可以缓存10个视图,不仅可以配置它