首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有彭博APIv3 / Java库的MATLAB / Datafeed编译代码: Java异常

带有彭博APIv3 / Java库的MATLAB / Datafeed编译代码: Java异常
EN

Stack Overflow用户
提问于 2014-09-10 17:48:46
回答 1查看 813关注 0票数 0

我试图通过Datafeed工具箱编译使用彭博APIv3的MATLAB代码。该代码在MATLAB中运行良好。编译器可以很好地处理没有Java的代码。javaclasspath通过以下方法引用API:

代码语言:javascript
复制
DYNAMIC JAVA PATH

C:\blpv3\API\APIv3\JavaAPI\v3.7.1.1\lib\blpapi3.jar

在编译过程中,我得到了几个与Java相关的编译错误(如下所示):

代码语言:javascript
复制
mcc -m -R -startmsg -R -completemsg -v my_prog.m

我想我需要告诉mcc更明确地链接到blpapi3.jar,但是如何链接呢?我需要设置一个静态Java路径吗?

任何帮助都将不胜感激!

代码语言:javascript
复制
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 
EN

回答 1

Stack Overflow用户

发布于 2014-09-12 07:04:51

经过更多的浏览和大量的试验,我已经解决了这个问题。答案已经出现在这个网站上的几个帖子中。不管怎样,有几个问题..。

1

看来

发生Java异常: java.lang.NoClassDefFoundError

是运行时错误,而不是编译错误。为了解决这个问题,我在编译器和MCR中更新了classpath.txt,位于

$matlabroot\toolbox\local\classpath.txt

像这样的事情

javaclasspath

代码语言:javascript
复制
    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不同。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25771873

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档