全新的Python& Jython的。我正在阅读一个简单的教程,并且正在努力学习基础知识,并且希望能够获得一些见解。
创建一个名为'PythonTest'的PyDev项目,我创建了一个名为test(test.py)的模块,代码看起来像这样
class test():
def __init__(self,name,number):
self.name = name
self.number = number
def getName(self):
return self.name
def getNumber(self):
return self.number
然后我创建了一个名为pythonJava的java项目,并在其中创建了三个类。
看起来像这样的ITest.java
package com.foo.bar;
public interface ITest {
public String getName();
public String getNumber();
}
TestFactory.java看起来像这样
package com.ngc.metro;
import org.python.core.PyObject;
import org.python.core.PyString;
import org.python.util.PythonInterpreter;
public class TestFactory {
private final PyObject testClass;
public TestFactory() {
PythonInterpreter interpreter = new PythonInterpreter();
interpreter.exec("from test import test");
testClass = interpreter.get("test");
}
public ITest create(String name, String number) {
PyObject testObject = testClass.__call__(new PyString(name),
new PyString(name), new PyString(number));
return (ITest) testObject.__tojava__(ITest.class);
}
}
最后是Main.java
public class Main {
private static void print(ITest testInterface) {
System.out.println("Name: " + testInterface.getName());
System.out.println("Number: " + testInterface.getNumber());
}
public static void main(String[] args) {
TestFactory factory = new TestFactory();
print(factory.create("BUILDING-A", "1"));
print(factory.create("BUILDING-B", "2"));
print(factory.create("BUILDING-C", "3"));
}
}
当我运行Main.java时,我收到以下错误:
线程“main”Traceback中的异常(最近一次调用最后一次):文件 ImportError中的“”,第1行:无法导入名称测试
有人可以告诉我我做错了什么吗?我的印象是我需要两个导入模块(test.py)和一个类“test”
编辑1:
为了避免我的sys.path的简单问题,我从IDLE
获得以下内容Python 3.3.3(v3.3.3:c3896275c0f6,2013年11月18日,21:18:40)[MSC v.1600 win32上的32位(英特尔)]输入“copyright”,“credits”或“license()” 欲获得更多信息。 import sys print(sys.path)['', 'C:\ Python33 \ Lib \ idlelib','C:\ Python33','C:\ Python33 \ Lib', 'C:\ Python33 \ DLLs','C:\ workspace \ myProject \ src', 'C:\ WINDOWS \ SYSTEM32 \ python33.zip', 'C:\ Python33 \ lib中\站点包']
来自测试导入测试 t = test.test(1,2) t.getName() 1
答案 0 :(得分:1)
实际上,这似乎是一个PYTHONPATH问题......因为你从IDLE获取它我不能说你的Java环境中实际上是怎样的(并且IDLE使用的是Python,但是在你的运行中你应该使用Java + Jython - 在这种情况下,您可能没有为Jython使用正确的sys.path - 至少我没有看到任何在上面的代码中定义了PYTHONPATH以包含.py文件的路径的地方)。
另外,如果您正在使用Java + Jython,请参阅结尾处的注释:http://pydev.org/manual_101_project_conf2.html,以便在PyDev中配置项目。