最近,AWS增加了对Java的支持。
虽然这是个好消息,但代码的大小(50 to压缩)受到了相当严重的限制。虽然这对于其他语言来说可能不错,但Java uberjars可以轻松地克服这一点。
因此,我一直在考虑让一个小型加载程序在运行时从其他地方拉进一个更大的罐子。(如果这是个好主意,暂时搁置一下)。
从我最初的研究看来,定制类装载机是可行的方法。对于AWS Lambda来说,这可能是个拒绝。
还有其他创造性的方法可以实现这一点吗?
发布于 2015-06-25 07:32:51
我认为ClassLoader,更确切地说是URLClassLoader,是要走的路,我不知道在运行时加载代码的其他解决方案。
类加载器甚至不必是自定义的。它只使用几行代码,如this post所示。
如果您要为应用程序加载特定服务的jar文件,也可以考虑方便的ServiceLoader。它的工作原理是相同的(实际上,您可以直接传递给它一个ClassLoader),但是它可以透明地从动态加载的库中实例化对象。否则,你就得把你的手弄得有点脏,用这样的方法:
Object main = loader.loadClass("Main", true).newInstance();https://stackoverflow.com/questions/31042312
复制相似问题