gpt4 book ai didi

java - 无法从 Jython 模块导入 Java 类

转载 作者:太空狗 更新时间:2023-10-29 17:33:29 27 4
gpt4 key购买 nike

注意:我找到了解决方案并自己回答了。虽然,我不知道为什么该设置错误并导致了问题。我仍然有兴趣对 Jython 导入系统的工作原理有一个很好的解释;如果有人想获得赏金,请回答。


我正在处理一个现有的 Java EE 项目,我需要在其中使用 Python 进行计算。我正处于集成测试的第一阶段,但我已经面临一个问题。我读了Chapter 10 of Jython book但仍然找不到解决方案。我还读了Chapter 8 (用于代码重用的模块和包)但对我来说还不清楚。

如能解释 Jython 导入系统的工作原理和配置方法,我们将不胜感激。

问题:

$ jython -v
import: 'exceptions' as org.python.core.exceptions in builtin modules
Jython 2.5.3 (2.5:c56500f08d34+, Aug 13 2012, 14:54:35)
[Java HotSpot(TM) Server VM (Oracle Corporation)] on java1.7.0_10
import: import site # precompiled from /home/me/jython/2.5.3/Lib/site$py.class
import: 'sys' as sys in builtin modules
import: import os # precompiled from /home/me/jython/2.5.3/Lib/os$py.class
import: 'errno' as org.python.modules.errno in builtin modules
import: 'posix' as org.python.modules.posix.PosixModule in builtin modules
import: import posixpath # precompiled from /home/me/jython/2.5.3/Lib/posixpath$py.class
import: import stat # precompiled from /home/me/jython/2.5.3/Lib/stat$py.class
import: 'java' as java package
import: 'File' as java class
import: 'IOException' as java class
import: 'org' as java package
import: 'Py' as java class
Type "help", "copyright", "credits" or "license" for more information.

>>> import pendulum.generator.BuildingType
import: import pendulum # precompiled from /path/to/project/build/classes/pendulum/__init__$py.class
import: import pendulum.generator # precompiled from /path/to/project/build/classes/pendulum/generator/__init__$py.class
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named BuildingType

我的问题是:我做错了什么以及如何解决才能成功导入 BuildingType 接口(interface)?也许问题出在 CLASSPATH 中,但我不知道哪个值合适。


代码组织:

$ tree build/classes/pendulum/generator/ src/pendulum/generator/
build/classes/pendulum/generator/
├── BuildingType.class
├── __init__.py
└── __init__$py.class

src/pendulum/generator/
├── BuildingType.java
└── __init__.py

private Jython registry file 定义的导入路径:

$ cat ~/.jython 
python.path=\
/path/to/project/build/classes:\
/path/to/project/src:\
/home/me/jdevel/extras/2.5.3/Lib:\
/home/me/jdevel/extras/2.5.3/Lib/site-packages

我确定 Jython 会选择路径,因为我在 Jython 提示符下使用 sys.path 检查了这一点。

BuildingType.java

package pendulum.generator;

public interface BuildingType {
public String getBuildingName();
public String getBuildingAddress();
public String getBuildingId();
}

最佳答案

您需要设置 CLASSPATH 以及 python.path。

使用相同的目录布局,这对我有用:

jython10$ CLASSPATH=build/classes/  jython -v Building.py
import: 'exceptions' as org.python.core.exceptions in builtin modules
import: import site # precompiled from /usr/local/Java/jython2.5.3/Lib/site$py.class
import: 'sys' as sys in builtin modules
import: import os # precompiled from /usr/local/Java/jython2.5.3/Lib/os$py.class
import: 'errno' as org.python.modules.errno in builtin modules
import: 'posix' as org.python.modules.posix.PosixModule in builtin modules
import: import posixpath # precompiled from /usr/local/Java/jython2.5.3/Lib/posixpath$py.class
import: import stat # precompiled from /usr/local/Java/jython2.5.3/Lib/stat$py.class
import: java package as '/Users/sdm7g/jaxp/jython10/build/classes/pendulum'
import: 'pendulum' as java package
import: 'pendulum' as java package
import: java package as '/Users/sdm7g/jaxp/jython10/build/classes/pendulum/generator'
import: 'pendulum.generator' as java package
import: 'BuildingType' as java class

引用:Working with CLASSPATH (Jython 书)。

关于java - 无法从 Jython 模块导入 Java 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14879255/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com