Python Forum

Full Version: Unable to access jarfile
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
I had a java application which was testing servers.
We are migrating to python, and for a start we are making use of the jar from the java application.
I use the jar in my python script, and call the

subprocess.call(
    ['java', '-jar', 'XYZ.jar', '-url', 'opc.tcp://localhost:XXXX', '-check', 'AB', '-specVersion', '2.0', '-test', 'testclient.TestGeneral'])
This works perfect!
However, we plan to have a clear structure by using classes(OOP).

So I make some modifications and I write the below

`
class TestClient:

    def performTest(self):

        subprocess.call(['java', '-jar', 'XYZ.jar', '-url', 'opc.tcp://localhost:XXXX', '-check', 'AB', '-specVersion', '2.0', '-test', 'testclient.TestGeneral'])


if __name__ == "__main__":
    client = TestClient()
    client.performTest()
`

I get an error saying

`
Error:
Error: Unable to access jarfile XYZ.jar
`

How is it that the jar becomes unaccesable? Am i missing something here? Please let me know
I guess you're running your tool in a different directory and Python is searing at the wrong places.

import subprocess
from pathlib import Path


script_dir = Path(__file__).parent
jar_file = script_dir / "XYZ.jar"

subprocess.call(["echo", "Path", jar_file.absolute()])
Quote:Changed in version 3.6: args parameter accepts a path-like object if shell is False and a sequence containing path-like objects on POSIX.

Changed in version 3.8: args parameter accepts a path-like object if shell is False and a sequence containing bytes and path-like objects on Windows.

If your Program have to be stated inside the program directory, you can tell this subprocess to do.
# will print /var
subprocess.call(["pwd"], cwd="/var")
Thank you for the suggestion. I got it working, as I had not added the direectory path in pycharm.