当前位置: 首页 > 知识库问答 >
问题:

使用PyObject的Jython类强制转换异常

鲍飞星
2023-03-14

我试图在Jython中创建和强制转换一个对象,收到以下错误:

Exception in thread "MainThread" java.lang.ClassCastException: org.python.core.PySingleton cannot be cast to resources.ixia.IxNetType
at resources.ixia.IxNetFactory.create(IxNetFactory.java:34)
at resources.ixia.IxiaTest.run(IxiaTest.java:34)
at resources.ixia.IxiaTest.<init>(IxiaTest.java:14)
at resources.ixia.IxiaTest.main(IxiaTest.java:42)

代码如下:

import org.python.core.PyObject;
import org.python.util.PythonInterpreter;

public class IxNetFactory {

    private PyObject ixNetClass;
    private PythonInterpreter interpreter;

    public IxNetFactory(String script_dir) {
        script_dir=script_dir.replace("\\", "/");

        interpreter = new PythonInterpreter();

        interpreter.exec("import sys");             
        interpreter.exec("sys.path.append('"+script_dir+"')");
        interpreter.exec("import time");
        interpreter.exec("import os");
        interpreter.exec("from ixnetworks import IxNet");
        //interpreter.exec("from utils import sm");
        //interpreter.exec("from utils import cpf");

        ixNetClass = interpreter.get("IxNet");
    }

    /*
     * Create an IxNet object
     * 
     * Usage: ixNet.create();
     */
    public IxNetType create() {
        PyObject ixNetObject = ixNetClass.__call__();
        return (IxNetType)ixNetObject.__tojava__(IxNetType.class);
    }

    public void close() {
        interpreter.close();
    }
}

就我的一生而言,我不知道我做错了什么。从我读过的所有东西来看,我似乎做得很正确,但我不能让它起作用。

共有1个答案

杨俊茂
2023-03-14

这是一个很晚的答案,但对于其他可能面临同样问题的人来说:我只是有了我认为是相同的错误,并修复了它。我猜Python类的声明不是从接口继承的。

例如,ixnet.py:

import IxNetType

class IxNet(IxNetType):
...

这是你应该拥有的。相反,您可能只是将IxNet声明为:

class IxNet:
...
 类似资料:
  • 例外情况: java.lang.ClassCastException:com.interconnect.library.gcm.util.checkplayServices(util.java:96),com.interconnect.library.gcm.regiseter.handleRegister(regiseter.java:53),com.interconnect.library.g

  • 我模拟了Jsch()类,并在下面的方法中获得了类强制转换异常。 原始方法。 联机获取Mockito异常。 例外情况: java.lang.ClassCastException:com.jcraft.jsch。频道$MockitoMock$1983492043不能转换为com.jcraft.jsch.ChannelSftp 测试用例调用方法。

  • 问题内容: 尝试将结果集强制转换为映射类时,我收到了hibernate类的类强制转换异常…我能够查看返回的结果集中的数据…但是它以Object []的形式返回我可以将Object []设置为List …我可以正确地进行hibernate映射吗?我从查询中获取了正确的数据,但映射不正确… 映射 映射类 参加班 主要 问题答案: 对于测试,我建议您在产生类强制转换异常的语句周围放置一个try-catc

  • 调用AffineTransform: 它驻留在自定义形状类(YingYang)中。 当我进行调用时,当我试图从绘图面板或在类本身(如果我将返回类型更改为YingYang)中将它转换回一个YingYang时,我会得到一个类转换异常。 java.lang.ClassCastException:java.awt.Geom.Path2D$Double不能强制转换为Animation.Yingyang 任何

  • 线程“main”java.lang.ClassCastException:java.base/jdk.internal.loader.ClassLoaders$AppClassLoader不能强制转换为java.base/java.net.urlClassLoader(位于org.springframework.boot.devtools.restart.defaultrestartinitial

  • 我想在ViewPager中的片段中设置一些TextViews。当我的片断实例化页面时,我正在它的onActivityCreated函数中设置我的TextViews。根据一些帖子,在getItemPosition中返回POSITION_NONE解决了我的问题,但因为每次都要删除所有视图,所以这不是一个有效的方法。所以我将它改为instatiateItem(ViewGroup container,in