问题标签 [java-bridge-method]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 在 Mac OS X 上使用带有 NLTK 的 Celery 线程中使用 python-javabridge JVM 的致命错误
我正在使用基于python-javabridge的 Weka 的 Python 包装器。我有一项很长的任务要执行,因此,我正在使用Celery来执行此操作。问题是我明白了
在线程内启动 JVM 时。这两行代码用于这样做(来自weka.core.jvm):
根据我的阅读,这可能是由于 JVM 未附加到 Celery 线程这一事实造成的。然而,javabridge.attach()
确实是里面跑的。
我错过了什么?
编辑:我确定了导致麻烦的代码。它与NLTK标记器有关。以下代码(根据Vebjorn 的回答)将重现该错误:
无需启动 JVM,代码就可以正常运行。当不作为 Celery 任务运行时,它也可以工作。我不明白为什么它会崩溃。
编辑 2:它实际上可以在干净的 Ubuntu 环境(Dockerized)中工作,但不能在 Mac OS X Yosemite (v10.3)上工作。
编辑 3:如评论中所述,如果from nltk.tokenize import RegexpTokenizer
在任务包装器内部完成,即在函数内部完成,它会hello()
起作用。
java - 如何从 python 程序运行 java 程序(.java 代码文件)?
我基本上想编写一个python代码,从那里我将输入字符串发送到java程序,我希望java程序执行它并将结果返回给python文件。可能吗?
java - 使用 javabridge 使用 python 运行 java jar 类
我正在尝试从 python 调用 jar 文件中的一些类。我已经设置了路径并尝试像这样运行它:
执行此操作时出现以下错误:
我不确定如何使用 javabridge 调用 jar 中的类。谁能帮我解决这个问题?
java - 不同 Java 版本的奇怪默认方法行为
假设我有以下类层次结构:
如您所见,只有MutableSet
类提供了$plus
方法的实现。在测试用例中,我在 type 的实例上调用此方法ArraySet
。测试总是在 CI 环境中通过,而AbstractMethodError
在我的本地环境中总是失败。在这两种情况下,我都使用 Gradle (2.7)。
错误:
测试代码:
java -version
输出:
CI(它工作的地方):
/li>本地(失败的地方):
/li>
我预计这是某种javac
错误,编译器无法添加所有必需的桥接方法(代码编译时没有任何警告或错误)。在 IntelliJ IDEA 中,使用javac
和 Eclipse 编译器都会出现问题。
python - 安装javabridge时pip错误代码1
我正在尝试安装 weka python 包装器,我发现首先我必须安装javabridge
包。但是当我尝试安装它时:
命令“python setup.py egg_info”在 /private/var/folders/ts/vm7w_pd55xscxfb6x9q_gbrr0000gn/T/pip-build-rx5vuvku/javabridge 失败,错误代码 1
我正在运行 mac os el capitan。
java - Java 类型擦除教程
我正在阅读 Oracle 上的泛型跟踪(Type Erasure),但我无法理解以下部分。
代码片段如下所示:
该线索提到以下内容:
考虑以下代码:
类型擦除后,此代码变为:
引用同一个教程 -
这是执行代码时发生的情况
- n.setData("你好"); 导致方法 setData(Object) 在 MyNode 类的对象上执行。(MyNode 类从 Node 继承了 setData(Object)。)
- 在 setData(Object) 的主体中,将 n 引用的对象的数据字段分配给一个 String。
- 通过 mn 引用的同一对象的数据字段可以被访问,并且应该是一个整数(因为 mn 是一个 MyNode,它是一个 Node.js。
- 尝试将 String 分配给 Integer 会导致 Java 编译器在分配时插入的强制转换引发 ClassCastException。
我无法理解为什么尝试检索数据会导致异常。据我了解,不应该设置数据本身引发异常(这是我的编译器发生的情况,但由于我没有使用 Oracle 的编译器,我不确定哪个是正确的)?
如果我的理解是正确的,那么 MyNode 类应该有两种方法:
因此,在 Node 上调用 setData(Object) 应该正确地调用 MyNode 中的 bridge 方法,该方法又调用 setData(Integer) ,这是应该抛出类转换异常的地方。但是甲骨文的教程特意说事实并非如此。那么我的理解有什么问题呢?请帮我理解。
java - 如何找到桥接方法的声明方法?
假设我们有以下接口和实现:
我需要的是给定 Matcher 实现的 matches(T) 方法的参数类型。
这是一个除了 CustomMatcher 情况外有效的实现,因为它无法检测到覆盖的 matches(..) 方法并返回String.class
而不是Integer.class
.
编辑:
我正在寻找一种不需要像这样指定参数类型的解决方案:
java - 被覆盖的 Java 方法即使存在也不会被调用
我需要确保我的应用程序与向我的应用程序扩展的超类引入新钩子方法的依赖项的前向兼容性。当我开始定义作为声明的子类型的返回类型时,引入新添加的方法(被我构建的旧版本忽略并被新版本使用)的直接方法停止工作。
当我直接调用我的重写方法作为foo.bar("")
超类方法被调用时。但是,当我通过 debugger 的反射调用它时foo.getClass().getMethod("bar", String.class).invoke(foo, "")
,它会按预期调用被覆盖的方法。当该方法的返回类型缩小到与被覆盖方法返回的相同类型时,该方法被正确调用,它之前是一个子类型。
intellij-idea - 具有所有合成方法的 IntelliJ 反编译类
我正在使用带有内置反编译器的 IntelliJ。我想反编译一个 .class 文件并查看由 java 编译器创建的所有方法(例如合成桥方法桥方法)。在 IntelliJ 中是否有可能做到这一点?
java - 当涉及有界泛型时,为什么 Java 声称有 2 个声明的方法?
具有以下定义:
为什么BaseServiceImpl.class.getDeclaredMethods()
返回2个方法:
public java.lang.Object BaseServiceImpl.findOne(java.io.Serializable)
public java.lang.Object BaseServiceImpl.findOne(java.lang.Object)
有没有办法过滤掉这些?