android-如何解决java.lang.UnsupportedOperationException:无法修改环境?

android-如何解决java.lang.UnsupportedOperationException:无法修改环境?,第1张

概述我试图在Android上运行一个子进程(请参阅thisquestion),这需要设置PYTHONHOME环境变量.我尝试使用以下代码进行 *** 作:ProcessBuilderpbuilder=newProcessBuilder("python/bin/python","test.py");pbuilder.directory(getFilesDir());Map<String,String>env=

我试图在Android上运行一个子进程(请参阅this question),这需要设置PYTHONHOME环境变量.我尝试使用以下代码进行 *** 作:

    ProcessBuilder pbuilder = new ProcessBuilder("python/bin/python", "test.py");    pbuilder.directory(getfilesDir());    Map<String, String> env = pbuilder.environment();    env.put("PYTHONHOME", "python");    Process process = pbuilder.start();

但我得到这个例外:

E/AndroIDRuntime(25857): FATAL EXCEPTION: mainE/AndroIDRuntime(25857): java.lang.UnsupportedOperationException: Can't modify environmentE/AndroIDRuntime(25857):    at java.lang.SystemEnvironment.put(System.java:740)E/AndroIDRuntime(25857):    at java.lang.SystemEnvironment.put(System.java:688)E/AndroIDRuntime(25857):    at my codeE/AndroIDRuntime(25857):    at androID.vIEw.VIEw.performClick(VIEw.java:2408)E/AndroIDRuntime(25857):    at androID.vIEw.VIEw$PerformClick.run(VIEw.java:8816)E/AndroIDRuntime(25857):    at androID.os.Handler.handleCallback(Handler.java:587)E/AndroIDRuntime(25857):    at androID.os.Handler.dispatchMessage(Handler.java:92)E/AndroIDRuntime(25857):    at androID.os.Looper.loop(Looper.java:123)E/AndroIDRuntime(25857):    at androID.app.ActivityThread.main(ActivityThread.java:4627)E/AndroIDRuntime(25857):    at java.lang.reflect.Method.invokeNative(Native Method)E/AndroIDRuntime(25857):    at java.lang.reflect.Method.invoke(Method.java:521)E/AndroIDRuntime(25857):    at com.androID.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)E/AndroIDRuntime(25857):    at com.androID.internal.os.ZygoteInit.main(ZygoteInit.java:626)E/AndroIDRuntime(25857):    at dalvik.system.NativeStart.main(Native Method)

有人有建议吗?我尝试将对python的调用包装在导出PYTHONHOME的shell脚本中,但没有成功.

加布

解决方法:

就在最近遇到了同样的问题.似乎您无法在AndroID版本< = 2.2上修改ProcessBuilder的环境图.我发现的唯一解决方法是使用exec()而不是ProcessBuilder.在您的情况下,这将导致以下问题:

String[] cmdarray = {"python/bin/python", "test.py"};String[] envp = {"PYTHONHOME=python"};Process process = Runtime.getRuntime().exec(cmdarray, envp, getfilesDir());

希望能有所帮助.
C

总结

以上是内存溢出为你收集整理的android-如何解决java.lang.UnsupportedOperationException:无法修改环境?全部内容,希望文章能够帮你解决android-如何解决java.lang.UnsupportedOperationException:无法修改环境?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1068914.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存