为什么在Java中这么做呢?如果您想拥有任何类型的模块系统,您需要能够动态加载jar.我被告知有一种方法可以通过编写自己的方式来完成它ClassLoader
,但这对于应该(至少在我看来)像调用一个以jar文件作为参数的方法一样容易的事情来做很多工作.
这样做的简单代码的任何建议?
是否可以在运行时将文件(不一定是jar文件)添加到java类路径.具体来说,该文件已存在于类路径中,我想要的是是否可以将此文件的修改后的副本添加到类路径中.
谢谢,
MATLAB配置为在搜索用户可修改的动态路径之前搜索其静态java类路径.不幸的是,静态路径包含相当多的非常旧的公共库,因此如果您尝试使用新版本,最终可能会加载错误的实现并获得错误.
例如,静态路径包含google-collections.jar的旧副本,该副本长期以来被Google的guava库取代,并且具有一些相同的类名(例如com.google.common.base.Objects).因此,如果你调用一个使用这种类之一的新方法的Guava方法,你最终会得到令人惊讶的NoSuchMethodErrors,因为首先找到了google-collections jar.
从R2012b开始,MATLAB允许您通过将javaclasspath.txt文件放在首选项文件夹中来指定要添加到静态路径的其他jar,但是将jar添加到路径的末尾,并且不允许您覆盖生成的jar进入MATLAB.
那么最好的解决方法是什么?
我在Windows XP Pro SP3上使用MATLAB R2007b,Java 1.6 SE,Eclipse Helios和MySql 5.
我正在尝试创建一个使用JPA注释来访问MySql 5数据库的类库.我们的想法是MATLAB脚本实例化这些Java对象,这些对象提供用于访问数据库的API.
我可以创建我的注释类,它们在Eclipse中工作(即JUnit测试).我可以将代码导出到jar,我可以从命令提示符运行.
我使用javaaddpath()更新MATLAB Java类路径.我可以在MATLAB中实例化我的类.但是,当我调用我的init(),它调用javax.persistence.Persistence.createEntityManagerFactory()时,我得到了可怕的
"没有EntityManager的持久性提供程序"
此错误通常意味着persistence.xml文件不在正确的位置.但它必须是因为我的jar从命令行工作.将META-INF文件夹添加到MATLAB java类路径中没有帮助.无论是否添加了META-INF,也不会提取jar并将提取的文件夹结构添加到类路径中.
有没有人有任何想法,坚果与否?有没有人在任何版本的MATLAB中做过这个.
谢谢.
-reilly.