我试图通过Datafeed工具箱编译使用彭博APIv3的MATLAB代码。该代码在MATLAB中运行良好。编译器可以很好地处理没有Java的代码。javaclasspath通过以下方法引用API:
DYNAMIC JAVA PATH
C:\blpv3\API\APIv3\JavaAPI\v3.7.1.1\lib\blpapi3.jar在编译过程中,我得到了几个与Java相关的编译错误(如下所示):
mcc -m -R -startmsg -R -completemsg -v my_prog.m我想我需要告诉mcc更明确地链接到blpapi3.jar,但是如何链接呢?我需要设置一个静态Java路径吗?
任何帮助都将不胜感激!
Warning: A Java exception occurred getting the method description for the
java.util.Locale class:
Java exception occurred:
java.lang.NoClassDefFoundError: com/bloomberglp/blpapi/Session
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Unknown Source)
at java.lang.Class.privateGetPublicMethods(Unknown Source)
at java.lang.Class.getMethods(Unknown Source)
at com.mathworks.jmi.OpaqueJavaInterface.doesMethodExist(OpaqueJavaInterface.java:407)
Caused by: java.lang.ClassNotFoundException: com.bloomberglp.blpapi.Session
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
... 5 more 发布于 2014-09-12 07:04:51
经过更多的浏览和大量的试验,我已经解决了这个问题。答案已经出现在这个网站上的几个帖子中。不管怎样,有几个问题..。
1
看来
发生Java异常: java.lang.NoClassDefFoundError
是运行时错误,而不是编译错误。为了解决这个问题,我在编译器和MCR中更新了classpath.txt,位于
$matlabroot\toolbox\local\classpath.txt
像这样的事情
javaclasspath
STATIC JAVA PATH
C:\Program Files\MATLAB\R2012a\java\patch
C:\blpv3\API\APIv3\JavaAPI\v3.7.1.1\lib\blpapi3.jar 或者,可以将blpapi3.jar复制到
$matlabroot/java/jarext
和其他的JAR文件一起。
另外,我删除了动态java路径,它只适用于Matlab。
2
我在startup.m中禁用了ADDPATH,其中有一个子句,如
如果~被部署& ~ismcc加法路径D:\Matlab .结束
3.
mcc的参数必须包括源文件所在的目录,即
mcc -m -I 'source_file_dir‘-v top_level_function.m
4.
当处理代码中的文件时,引用相对于$matlabroot。
如果部署了sFile_Path = else文件(matlabroot,‘.’,'Input',sFile_Name);否则sFile_Path =哪个(SFile_Name);结束
5
注意,MCR的$matlabroot与Matlab的$matlabroot不同。
https://stackoverflow.com/questions/25771873
复制相似问题