我正在使用 KNIME SDK(它只是一个改编的 Eclipse)为 KNIME 创建一个节点扩展。我已经完成了我的代码,我在 Eclipse 中对其进行了测试,它运行良好。所以我将它导出,复制到我安装的 KNIME.jar
的子文件夹中,然后启动 KNIME。dropins
做了一个新的工作流程,添加了我的节点,尝试执行它,然后出现以下错误:
Execute failed: Support code location could not be determined. Could not convert from URL to URI location.
URL Location: file:/C:/Program Files/KNIME_2.11.2/configuration/org.eclipse.osgi/bundles/528/1/.cp/matlabcontrol-4.1.0.jar
Code Source: (file:/C:/Program Files/KNIME_2.11.2/configuration/org.eclipse.osgi/bundles/528/1/.cp/matlabcontrol-4.1.0.jar <no signer certificates>)
Protection Domain: ProtectionDomain (file:/C:/Program Files/KNIME_2.11.2/configuration/org.eclipse.osgi/bundles/528/1/.cp/matlabcontrol-4.1.0.jar <no signer certificates>)
null
<no principals>
java.security.AllPermissionCollection@6ac1c077 (
("java.security.AllPermission" "<all permissions>" "<all actions>")
)
Class Loader: org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader@b836456
Class Loader Class: class org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader
根据KNIME 论坛上的一个帖子,社区扩展“Matlab Snippet”也出现了类似的问题,它建立在matlabcontrol
我使用的相同框架上(这也是错误中提到的那个)。
matlabcontrol
我试图通过在我的项目中包含作为一个包(它是开源的,所以我可以只导入源)来逃避这个问题,然后出现了同样的错误并提到了.jar
由 OSGI 系统创建的包(在我的情况下matlab.jar
,它是我在build.properties
) 中选择的名称,所以我假设它只是按字母顺序排列的第一个,并且 OSGI 捆绑文件夹中的所有文件都受到此问题的影响。
让我感到困惑的是,只有在我尝试执行节点并连接到 MATLAB 时才会出现问题。不幸的是,上面链接的 KNIME 论坛主题似乎没有解决问题,显然该扩展的旧版本没有问题,用户只是安装了旧版本。
那么,我能否以某种方式使 URL 正确转换为 URI?保护域是原因吗?我可以更改它吗?它与默认的类加载器有什么关系吗?
我现在已经通过文件夹中的功能安装了插件(见评论)。错误仍然存在,但路径已更改:
Execute failed: Support code location could not be determined. Could not convert from URL to URI location.
URL Location: file:/C:/Program Files/KNIME_2.11.2/plugins/org.knime.ext.matlab_1.0.0/matlab.jar
Code Source: (file:/C:/Program Files/KNIME_2.11.2/plugins/org.knime.ext.matlab_1.0.0/matlab.jar <no signer certificates>)
Protection Domain: ProtectionDomain (file:/C:/Program Files/KNIME_2.11.2/plugins/org.knime.ext.matlab_1.0.0/matlab.jar <no signer certificates>)
null
<no principals>
java.security.AllPermissionCollection@2da869b5 (
("java.security.AllPermission" "<all permissions>" "<all actions>")
)
Class Loader: org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader@372bf03c
Class Loader Class: class org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader