我有一个jython servlet作为在tomcat5中运行的大型应用程序的一部分.我测试了一些Spring Framework类并在Jython servlet中创建了对象.当我尝试在应用程序中创建类的对象时,我捕获一个异常消息"没有可见的类构造函数".这些java类确实有一个公共构造函数类,例如:
public SchoolImpl() {
}
我在python中创建对象:
from com.dc.sports.entity import SchoolImpl
...
school = SchoolImpl()
我究竟做错了什么?
为什么你可以在不需要GIL但是Python(CPython)需要GIL的情况下运行Jython和IronPython?
在大型Java项目中与Java配对的最佳动态语言是什么?
我们正在考虑使用动态语言进行测试,控制器和服务.一些选项是Groovy,JRuby或Jython.每个人的优点和缺点是什么?理想情况下,我们可以从动态语言调用Java,也可以从Java调用动态语言.
编辑:如果有帮助,我们将Hibernate与PicoContainer和Webwork一起使用.
谢谢,亚历克斯
试图建立一个项目,该项目是Jythonroid.我设法解决所有错误,但它不会编译.界面建议使用--core-library选项.知道如何在Android的eclipse中设置此标志.
干杯
我将Python代码拆分为Web前端和消费者后端.后端必须在Jython下运行才能与某些Java库进行互操作,但我们想在cpython/mod_wsgi中运行webserver,因为我们已经通过Jetty在Jython中运行了它.
我们使用virtualenv进行开发,我目前有两个virtualenv目录,一个用于cpython,另一个用于jython.我的问题是两个口译员是否可以愉快地共存于一个虚拟语言中(主要是为了节省必须两次更新已安装的库,而且还来自好奇心).我用两个解释器初始化了相同的环境:
virtualenv -p python environ
virtualenv -p jython environ
Run Code Online (Sandbox Code Playgroud)
我可以运行两个解释器,我可以symlink environ/lib/site-packages和environ/lib/python/site-packages,这样他们就可以看到同一个地方.只要没有库依赖于C扩展/优化,我就不明白为什么它们不能在两个解释器中工作.有人不同意或有任何需要注意的事项吗?
当我从Jython脚本调用重载的Java方法时,我看到了一些我不理解的奇怪行为.
这是我的Java类:
public class TestClass {
public static float[][][] overloaded(float[][][] x) {
return x;
}
public static float[][][][] overloaded(float[][][][] x) {
return x;
}
public static float[][][] zeros(int n1, int n2, int n3) {
return new float[n3][n2][n1];
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的Jython脚本:
import time,TestClass
n1,n2,n3 = 250,250,250
z = TestClass.zeros(n1,n2,n3)
start = time.time()
TestClass.overloaded([z,z,z])
print 'time =',(time.time()-start)
Run Code Online (Sandbox Code Playgroud)
这个Jython脚本大约需要1分钟才能运行,但如果我在TestClass中注释掉第一个方法,那么脚本几乎不需要任何时间.我很困惑为什么在方法重载时需要这么长时间.我在这里错过了什么吗?
我正试图通过RS232发送一个小程序发送十六进制.从我所看到的Python开始,这是一个非常好的语言.
3年前我在高中新生的compsci课程中学到了它,语法很棒.它非常像伪代码.
然而,从大一开始,我一直在使用Java,Objective-C(上帝保佑我可怜的灵魂)和C#.
无论如何,我想用Python来学习如何使用串行通信.现在我再次看到它我已经"发现"了似乎是python的Jython,但它使用了Java运行时(这是正确的吗?)
我会更喜欢使用像Jython而不是古老的Python这样的东西吗?或者对于通过串行端口发送十六进制这样的"小"任务,我不会注意到差异吗?
如果你打算向我提出问题请你至少告诉我为什么? - 谢谢.
试图在Jython中使用Java Enum但我无法弄清楚如何使用它们.
导入时我看到列出的枚举,BotInterface$MOVE所以我放下了这一行
from amazebot2012.BotInterface import MOVE
Run Code Online (Sandbox Code Playgroud)
在Java中,我通常会将其用作
bot.move(MOVE.FORWARD);
bot.move(MOVE.BACKWARD);
Run Code Online (Sandbox Code Playgroud)
一旦我导入它,Jython等价物是什么?
尝试bot.move(MOVE.FORWARD)给我错误:
来自导入的未定义变量:FORWARD
在我尝试将Jython与Apache-POI一起使用时,Jython独立jar会抛出ImportError异常.
下面你会发现我如何调用我的Jython脚本:
java -cp C:\jAutoMailerScript\lib\poi-3.9-20121203.jar -jar jython.jar main.py
Run Code Online (Sandbox Code Playgroud)
错误:
Traceback(最近一次调用最后一次):
文件"main.py",第32行,in
来自org.apache.poi.hssf.usermodel import*
ImportError:没有名为apache的模块
这是第32行的代码:
from org.apache.poi.hssf.usermodel import *
Run Code Online (Sandbox Code Playgroud)
为了使用Java的第三方应用程序,Jython是否有任何限制?
提前致谢,
根据我读过的内容,sys.path应该由PYTHONPATH设置.在Python中,它以这种方式工作,但不是在Jython中.我可以绕过-Dpython.path=...但我想知道Jython为什么打得不好.
qa@Scantron:/tmp/pip-build-qa/robotframework> echo $PYTHONPATH
/usr/lib64/python2.7
qa@Scantron:/tmp/pip-build-qa/robotframework> jython
Jython 2.2.1 on java1.7.0_17
Type "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['', '/usr/share/jython/Lib', '__classpath__']
>>> ^D
qa@Scantron:/tmp/pip-build-qa/robotframework> jython -Dpython.path=/usr/lib64/python2.7
Jython 2.2.1 on java1.7.0_17
Type "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['', '/usr/share/jython/Lib', '/usr/lib64/python2.7', '__classpath__']
Run Code Online (Sandbox Code Playgroud) jython ×10
java ×6
python ×6
android ×1
apache-poi ×1
arrays ×1
eclipse ×1
gil ×1
groovy ×1
ironpython ×1
jruby ×1
path ×1
serial-port ×1
servlets ×1
tomcat ×1
virtualenv ×1