问题标签 [urlclassloader]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 是否可以在java中动态“添加”到类路径?
如何以编程方式获取上述命令中的功能?像,是否可以运行为:
并得到相同的结果?我尝试使用 URLClassLoader 但它修改了类路径并且没有添加到它。
谢谢!
感谢米尔豪斯的回复。但这就是我想要做的.. 怎么可能首先将 jar 放入类路径?我也尝试使用自定义类加载器:(
那行得通..但很抱歉我只需要运行它:java parserTester 我想知道这样的事情是否可能???
它必须如此,因为我在一个单独的文件夹中有 parserTester.java 和 .class。我需要保留文件结构。parserTester 在单独的 jar 文件夹中使用 jar。
jar - 获取 urlclassloader 加载的 jar 文件的大小
有人知道找到由 urlclassloader 动态加载的文件大小的好方法吗?
我以以下方式使用 urlclassloader,但需要跟踪使用了多少带宽。
提前致谢!
java - 在运行时加载 .jars:我的加载器工作,但使用 setContextClassLoader 没有?
我有一个名为“MyClassLoader”的 URLClassLoader,上面有一些罐子。如果我尝试
有用。
如果我尝试
它也有效。
但如果我尝试
它抛出一个ClassNotFoundException
.
当然,Class.forName
这里只是一个例子;尝试使用MyClass
也会引发异常。
这一切可能意味着我不明白它是如何setContextClassLoader
工作的。谁能向我澄清这一点并帮助我理解它 - 我应该怎么做才能使我的代码正常工作?谢谢你。
java - URLClassLoader + loadClass + 在独立进程上调用 main 方法?爪哇
我正在使用以下方法来调用 jar 文件中的类:
是否可以在单独的进程上调用它?那么正在运行的应用程序和新调用的应用程序没有任何共同点吗?
情况:您启动程序 a(客户端更新程序)。从客户端 a 您启动程序 b(客户端)
使用当前代码,项目 a 和项目 b 的所有实例共享相同的堆空间。我正在尝试实现一个状态,即项目 b 的所有实例都是独立的,并且不关心项目 A 是否终止。
java - 配置类加载器
我正在使用扩展 URLClassLoader 的自定义类加载器。我将一些类加载到我的自定义类加载器中并执行一些任务。任务完成后,我想处理类加载器。我尝试通过将引用设置为 null 来做到这一点。
但这不会垃圾收集类加载器。
有没有办法可以帮助我想要实现的目标?
java - 可以将 .class 文件添加到 URLClassLoader 的 urlpath 中吗
我有一个从 URLClassLoader 扩展的自定义类加载器。我使用 addURL() 向 urlpath 添加了一个 .class 文件;但是当我使用这个加载器做一个 class.forname() 时,我得到一个 ClassNotFoundException。但是,如果我创建一个 jar 并将该 jar 添加到 urlpath,我没有得到任何异常。
使用 addURL(),我们可以添加 .class 文件或目录吗?有人可以确认这一点,因为它对我不起作用吗?
java - 使用 URLClassLoader 重新加载 jar 时出现问题
我需要为应用程序的某些部分向现有应用程序添加插件功能。我希望能够在运行时添加一个 jar,并且应用程序应该能够从 jar 加载一个类而无需重新启动应用程序。到现在为止还挺好。我使用 URLClassLoader 在网上找到了一些示例,它工作正常。
我还希望能够在 jar 的更新版本可用时重新加载相同的类。我再次找到了一些示例,据我所知,实现这一目标的关键是我需要为每个新负载使用一个新的类加载器实例。
我写了一些示例代码,但遇到了 NullPointerException。首先给大家看一下代码:
IPlugin 是一个简单的接口,只有一个方法 doProc:
jartest.TestPlugin 是这个接口的一个实现,doProc 只是打印出一些语句。
现在,我将 jartest.TestPlugin 类打包到一个名为 test.jar 的 jar 中,并将其放在 C:\plugins 下并运行此代码。第一次迭代运行顺利,类加载没有问题。
当程序执行 sleep 语句时,我将 C:\plugins\test.jar 替换为包含同一类的更新版本的新 jar,并等待下一次 while 迭代。现在这是我不明白的。有时更新的类会重新加载而没有问题,即下一次迭代运行良好。但有时,我看到抛出异常:
我已经在网上搜索并挠了挠头,但无法真正得出关于为什么会引发此异常的任何结论 - 只是有时,并非总是如此。
我需要你的经验和专业知识来理解这一点。这段代码有什么问题?请帮忙!!
如果您需要更多信息,请告诉我。感谢您的关注!
java - java web start 替代方案
我们正在寻找 Java web start 的替代方案,它可以有效地做同样的事情,只是实现得更好。我们遇到了很大的麻烦。我们有几个办公室的 XP 桌面,都略有不同,到目前为止,只有少数几个没有经过认真的调整就可以工作。问题在于不能很好地使用代理设置(在 Java 控制面板中使用直接连接允许它工作),在设置像“-Xmx”这样的参数时拒绝运行,但在没有设置时运行良好(直到它运行内存不足)和其他我们无法解决的奇怪问题。
web start 的工作方式正是我们想要的,即连接到具有应用程序的服务器、下载任何更改的内容、保留 jar 缓存等。这里的其他团队在他们的 C# 应用程序中使用“clickonce”,它确实有效地同样的事情,但似乎不那么麻烦。
我确信我们不是唯一遇到此问题的人,但四处搜索并没有真正显示出任何替代方案。我们已经研究过编写一个存根本地应用程序,它本质上只是一个 URLClassLoader,它可以通过网络即时加载我们的应用程序,但不幸的是,这对于其他办公室来说太慢了。有人有想法么?
谢谢
更新
万一有人对最终发生的事情感到好奇,我们又给了 webstart 一个月左右的时间,但继续遇到问题,所以我们实现了自己的版本。它基本上只是一个存根,它有一个指向网络服务器的 URL 类加载器。它只有不到 200 行代码,并且已经运行了好几个月。这并不理想,但在有人改进 webstart 之前,我们会坚持使用它。
2018 年更新
所以,几年后,我正在做一个有同样问题的新项目。这次我们使用getdown而不是编写自己的 webstart 实现。我们发现它比 web start 有了很大的改进,而且对我们来说效果很好。
java - 我是否需要创建自定义类加载器来支持新的档案格式?
我需要支持从其他类型的档案(tar.gz、tar.bz2...)和第三方定义的自定义类型中加载类。我需要重写“loadClass”方法来实现吗?(也许还有另一个扩展点可以做到这一点?我仍然希望从默认类加载器所做的所有安全检查中受益)。
java - 列出 jar 文件中的类
如何动态加载 jar 文件并列出其中的类?