Py4j 教程问题
Issue with Py4j tutorial
请注意,我以前没有任何使用 Java 的经验。我在使用 Py4j 的以下教程时遇到问题:https://www.py4j.org/getting_started.html
我在 Anaconda 环境中安装了 Py4j。我在 Ubuntu 工作。我将类路径设置为包含 Py4j 的 .jar 文件。当我尝试编译上述网页上的示例代码时,我收到一条错误消息,指出 Stack 符号不存在。我试图添加一行代码来导入它,但这也没有帮助(见图片)。
Error and Directory Structure (image)
Source code:
Stack.java
package py4j.examples;
import java.util.LinkedList;
import java.util.List;
public class Stack {
private List<String> internalList = new LinkedList<String>();
public void push(String element) {
internalList.add(0, element);
}
public String pop() {
return internalList.remove(0);
}
public List<String> getInternalList() {
return internalList;
}
public void pushAll(List<String> elements) {
for (String element : elements) {
this.push(element);
}
}
}
StackEntryPoint.java
package py4j.examples;
import py4j.GatewayServer;
import py4j.examples.Stack; // <-- I added this line but it does not solve the issue
public class StackEntryPoint {
private Stack stack;
public StackEntryPoint() {
stack = new Stack();
stack.push("Initial Item");
}
public Stack getStack() {
return stack;
}
public static void main(String[] args) {
GatewayServer gatewayServer = new GatewayServer(new StackEntryPoint());
gatewayServer.start();
System.out.println("Gateway Server Started");
}
}
我之前没有用过Java,所以在编译的时候对如何link类感到困惑。我已经尝试在网上广泛查看 Java documentation/resources 和相关问题,但似乎无法解决这个问题。有人可以指出我做错了什么吗?
谢谢。
您正在编译 class StackEntryPoint
,但您还没有编译 Stack
class。先这样做,否则不能用它来编译StackEntryPoint
.
通常您的 IDE 会为您解决这个问题,但是您在此处进行了特殊设置(使用 Python 集成)所以我不确定您将如何集成它.
理想情况下,您将使用常规 Java 工具(例如 Maven 和 IntelliJ IDEA)将 Java 库构建为单独的 JAR,但这不是一个坏练习先学会简单地做。
请注意,我以前没有任何使用 Java 的经验。我在使用 Py4j 的以下教程时遇到问题:https://www.py4j.org/getting_started.html
我在 Anaconda 环境中安装了 Py4j。我在 Ubuntu 工作。我将类路径设置为包含 Py4j 的 .jar 文件。当我尝试编译上述网页上的示例代码时,我收到一条错误消息,指出 Stack 符号不存在。我试图添加一行代码来导入它,但这也没有帮助(见图片)。
Error and Directory Structure (image)
Source code:
Stack.java
package py4j.examples;
import java.util.LinkedList;
import java.util.List;
public class Stack {
private List<String> internalList = new LinkedList<String>();
public void push(String element) {
internalList.add(0, element);
}
public String pop() {
return internalList.remove(0);
}
public List<String> getInternalList() {
return internalList;
}
public void pushAll(List<String> elements) {
for (String element : elements) {
this.push(element);
}
}
}
StackEntryPoint.java
package py4j.examples;
import py4j.GatewayServer;
import py4j.examples.Stack; // <-- I added this line but it does not solve the issue
public class StackEntryPoint {
private Stack stack;
public StackEntryPoint() {
stack = new Stack();
stack.push("Initial Item");
}
public Stack getStack() {
return stack;
}
public static void main(String[] args) {
GatewayServer gatewayServer = new GatewayServer(new StackEntryPoint());
gatewayServer.start();
System.out.println("Gateway Server Started");
}
}
我之前没有用过Java,所以在编译的时候对如何link类感到困惑。我已经尝试在网上广泛查看 Java documentation/resources 和相关问题,但似乎无法解决这个问题。有人可以指出我做错了什么吗?
谢谢。
您正在编译 class StackEntryPoint
,但您还没有编译 Stack
class。先这样做,否则不能用它来编译StackEntryPoint
.
通常您的 IDE 会为您解决这个问题,但是您在此处进行了特殊设置(使用 Python 集成)所以我不确定您将如何集成它.
理想情况下,您将使用常规 Java 工具(例如 Maven 和 IntelliJ IDEA)将 Java 库构建为单独的 JAR,但这不是一个坏练习先学会简单地做。