我想将java包“TestPackage
”导入jython脚本,
import TestPackage
print TestPackage.SampleClass().getMessage();
我收到以下错误,
ImportError: No module named TestPackage","errorPoint":"","lineNumber":"1","errorPointMessage":"in <module>\nImportError: No module named TestPackage
当我使用from TestPackage import SampleClass
时工作正常。如果我执行from <pacakage> import <anyclass>
语句一次,那么import <pacakage>
可以在没有导入错误的情况下运行。
我尝试设置PySystemState.add_package("TestPackage")
,但这会导致内存泄漏。
有没有其他方法可以使用import TestPackage
?如何在没有内存泄漏的情况下在jython中使用“import <packagename>
”?
答案 0 :(得分:0)
这是由于Java和Python的不同。
在Java中,您可以导入类,静态导入常量和静态方法。您无法导入包。 import java.util;
是编译错误,但import java.util.Collections;
或import java.util.Collections.*;
没问题。 Java包是一种组织一堆类的方法,但并不是一个带有构造函数,方法或常量的类。我喜欢将Java包视为包含属于该包的所有类的zip文件。 Java包只是一个命名空间。
在Python中,您可以导入模块,类和从导入类,函数和常量。但是,Python模块更像是Java类而不是Java包。它不仅仅是类&#34;的&#34; zip文件,而是包含子类的类。 Python模块是具有 init .py的文件夹中的脚本集合,它定义了该模块的类和方法。因此,您可以执行import collections
之类的操作。 Python还允许您执行import collections.OrderedDict
,from collections import OrderedDict
和from collections import OrderedDict as OD
。
我希望这可以解释为什么您无法导入Java包。您必须从该Java包导入一些东西(可能是一个类),以便python创建一个变量。