我正在使用SWIG为我的DLL生成Java JNI包装器。
作为其中的一部分,我想生成一个自定义异常类,但我想自己为我的异常类提供完整的Java类实现。
我当然可以将我的Java类放在一个单独的文件中,但是可以将这样的手工Java类嵌入到SWIG脚本中吗?
答案 0 :(得分:1)
除非类是某种类的内部类,否则你只需将其编写为单独的文件,因为这是编译Java时所需要的。
我有点疑惑为什么你想要编写自己的纯Java异常类 - 与SWIG相关的正常做法是派生自std::exception
,即使它是通过%inline
指令并且自然而且免费地将C ++异常层次结构与Java一起合并。
如果您真的想要(虽然我个人永远不会)从SWIG界面生成纯Java类,您可以使用一种解决方法:
%module test
%nodefaultctor MyException;
%typemap(javabody) MyException %{
// Java stuff goes here (or in javacode typemap)
%}
%typemap(javafinalize) MyException ""
%typemap(javadestruct) MyException ""
struct MyException {};
生成:
public class MyException {
// stuff goes here
}
但是,由于这显然是一个丑陋的黑客,我强烈建议完全避免它,只是在你的源代码发布中正常编写类。