By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
443,908 Members | 1,850 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 443,908 IT Pros & Developers. It's quick & easy.

JEP and JPype in a single process

P: n/a
skn
Hello,

I have written a very simple java class file, which invokes a Python script
using JEP.

Code snippet:-
-------------------
Jep jep = new Jep(false);
jep.runScript("C:\\temp\\testscript.py");
jep.close();

Now inside this Python script I want to make Java calls using JPype.
If I use startjvm() inside this Python script, a Runtime Error (exception)
is thrown.
Also tried attachThreadToJVM(), but doesn't work, again Runtime Error.

Any clues as to how I could achieve my goal??
The interaction shown below should happen in a single process.

JAVA ==> jep ==> PYTHON ==> jpype ==> JAVA

Regards,
skn
Jul 19 '05 #1
Share this Question
Share on Google+
4 Replies


P: n/a
On 6/20/05, skn <sk*@skn.com> wrote:
Hello,

I have written a very simple java class file, which invokes a Python script
using JEP. .. . . Now inside this Python script I want to make Java calls using JPype.


I am not familiar with either Jepp or JPype, but I spotted this
snippet on Jepp page (http://jepp.sourceforge.net/):

import jep
FileInputStream = jep.findClass('java.io.FileInputStream')
try:
fin = FileInputStream('adsf')
except jep.FileNotFoundException:
print 'Invalid file'

Are you sure you need to call JPype?

- kv
Jul 19 '05 #2

P: n/a
skn wrote:
Hello,

I have written a very simple java class file, which invokes a Python script
using JEP.

Code snippet:-
-------------------
Jep jep = new Jep(false);
jep.runScript("C:\\temp\\testscript.py");
jep.close();

Now inside this Python script I want to make Java calls using JPype.
If I use startjvm() inside this Python script, a Runtime Error (exception)
is thrown.
Also tried attachThreadToJVM(), but doesn't work, again Runtime Error.

Any clues as to how I could achieve my goal??
The interaction shown below should happen in a single process.

JAVA ==> jep ==> PYTHON ==> jpype ==> JAVA

Regards,
skn


You're trying to do something I hope to make possible somewhere down the
road ...

As of today, I do not think it is possible. JPype does not provide a way
to initialize the JVM-bridge system except for startJvm .. which seems
to be prohibited when a JVM is already running.

AttachThreadToJVM will only work once the JVM-bridge system has been
initialize.

I will look into providing a sister method to startJVM to attach to the
currently running JVM instead of starting a new one. IF it does not
require major changes I will release it as 0.5.1. If you'd like you can
submit an enhancement request on the JPype sourceforge page, so this
doesn't get lost.

--
Steve Menard
--------------------
Maintainer of http://jpype.sourceforge.net
Jul 19 '05 #3

P: n/a
Steve Menard wrote:
skn wrote:
Hello,

I have written a very simple java class file, which invokes a Python
script
using JEP.

Code snippet:-
-------------------
Jep jep = new Jep(false);
jep.runScript("C:\\temp\\testscript.py");
jep.close();

Now inside this Python script I want to make Java calls using JPype.
If I use startjvm() inside this Python script, a Runtime Error
(exception)
is thrown.
Also tried attachThreadToJVM(), but doesn't work, again Runtime Error.

Any clues as to how I could achieve my goal??
The interaction shown below should happen in a single process.

JAVA ==> jep ==> PYTHON ==> jpype ==> JAVA

Regards,
skn


You're trying to do something I hope to make possible somewhere down the
road ...

As of today, I do not think it is possible. JPype does not provide a way
to initialize the JVM-bridge system except for startJvm .. which seems
to be prohibited when a JVM is already running.

AttachThreadToJVM will only work once the JVM-bridge system has been
initialize.

I will look into providing a sister method to startJVM to attach to the
currently running JVM instead of starting a new one. IF it does not
require major changes I will release it as 0.5.1. If you'd like you can
submit an enhancement request on the JPype sourceforge page, so this
doesn't get lost.


OK .. it now works. There are a few caveats that cannot be resolved
until either JEP and JPype can somehow cooperate or I finish what I
started and basically fold the JEP functionality in JPype.

I will release the new functionality in as version 0.5.1. The "gotchas"
are going to be in a readme-jep.txt file.

--
Steve Menard
--------------------
Maintainer of http://jpype.sourceforge.net
Jul 19 '05 #4

P: n/a
skn
Thanks for your prompt reply, Steve.
Just one suggestion, may be the startJVM method's implementation can itself
be changed to check for already existing JVM.
Of course this will also mean a change in shutdownJVM() semantics. If JVM
has been started earlier(not using startJVM()), shutdownJVM() should be a
do-nothing function.

Another question I had was, is there any option to suppress the JVM activity
report that gets displayed. For e.g.,

JVM activity report :
classes loaded : 26
JVM has been shutdown

I know I can do it by re-directing the std err to NUL.
But is there any other option?

With best regards,
skn

"Steve Menard" <fo*@bar.com> wrote in message
news:MX*******************@weber.videotron.net...
skn wrote:
Hello,

I have written a very simple java class file, which invokes a Python script using JEP.

Code snippet:-
-------------------
Jep jep = new Jep(false);
jep.runScript("C:\\temp\\testscript.py");
jep.close();

Now inside this Python script I want to make Java calls using JPype.
If I use startjvm() inside this Python script, a Runtime Error (exception) is thrown.
Also tried attachThreadToJVM(), but doesn't work, again Runtime Error.

Any clues as to how I could achieve my goal??
The interaction shown below should happen in a single process.

JAVA ==> jep ==> PYTHON ==> jpype ==> JAVA

Regards,
skn


You're trying to do something I hope to make possible somewhere down the
road ...

As of today, I do not think it is possible. JPype does not provide a way
to initialize the JVM-bridge system except for startJvm .. which seems
to be prohibited when a JVM is already running.

AttachThreadToJVM will only work once the JVM-bridge system has been
initialize.

I will look into providing a sister method to startJVM to attach to the
currently running JVM instead of starting a new one. IF it does not
require major changes I will release it as 0.5.1. If you'd like you can
submit an enhancement request on the JPype sourceforge page, so this
doesn't get lost.

--
Steve Menard
--------------------
Maintainer of http://jpype.sourceforge.net

Jul 19 '05 #5

This discussion thread is closed

Replies have been disabled for this discussion.