将文件夹中的文件发送到Java .jar文件中作为参数/参数?
我正在编写一个C#程序,该程序会提取多个已编译的Lua脚本。基本上,我想要做的是创建一个将所有提取出的文件发送到decompiler(通过提供文件的路径和名称)的lua.jar反编译器的进程。
Java .jar文件unluac.jar位于与我的C#可执行文件相同的文件夹中。
Process doctorProc = new Process();
doctorProc.StartInfo = new ProcessStartInfo("unluac.jar", "-jar unluac.jar" + Path.Combine(selectedDirectory, newFileDirectory));
doctorProc.StartInfo.FileName = "unluac.jar";
doctorProc.StartInfo.WorkingDirectory = Directory.GetCurrentDirectory();
doctorProc.StartInfo.RedirectStandardOutput = true;
doctorProc.StartInfo.UseShellExecute = false;
doctorProc.Start();
String luaScript = doctorProc.StandardOutput.ReadToEnd();
File.WriteAllText(Path.Combine(finalOutputDirectory,fileName), luaScript);
doctorProc.WaitForExit();
这就是我拥有的。它正在提供的路径比较模糊,基本上是将 C:\" 与 "\Users\Dan\script1.lua 组合在一起。
当我执行提取操作时,它会调用这个函数。我并没有看到Java程序在任何时候打开,当它到达StandardOutput时,它给我一个异常。
{"The specified executable is not a valid application for this OS platform."}
这很奇怪,我不确定自己是否理解了问题。我在Windows 10上使用unluac.jar(我已经使用过多次来反编译脚本)。
我不确定到底发生了什么,因为我作为一个程序员还没有很多经验。但是,如果可以解决此错误,则可能未正确编写该余下的代码,我有些不知所措。
我希望有一种方法可以修复这个当前的代码或更好的方法来处理它。我尝试使此帖子简单化,但如果我错过了任何重要信息,请告诉我。我将非常愿意添加任何所需的内容。我有信心自己犯了错误,但是有机会修复它并从中学习将是非常好的。
非常感谢大家的帮助!
编辑: 我解决了一些问题,但仍然有错误。最初,程序无法找到unluac.jar,因为我未能为它提供工作目录。我还需要重定向标准输出,然后将useexecutable shell设置为false,但我仍然有关于错误操作系统的新错误。谢谢!
编辑2: 更改StartInfo.FileName为“java”而不是“unluac.jar”后,我不再收到有关操作系统的任何错误。Java程序在一秒钟内弹出,然后我再次收到异常:
{"Access to the path 'C:\Users\Dan\Desktop\22222\Decompiled\WildStar\pov\BinCommon\Scripts\Experimental' is denied."}
我的程序以前通过File.WriteAllBytes和File.WriteAllText写入过文件,总是写入同一个文件夹中的文件。我已添加程序集清单并给了程序提升的特权,但它仍然给出相同的异常。
编辑3: 通过同时提供目录和文件名来解决了前面的问题。目前,Java程序正在运行,我的程序正在迭代我需要发送给它的所有文件,但出于某种原因,所有文件的输出都为空。它们具有正确的名称并位于正确的文件夹中,但其大小均为0kb。
我怀疑这可能与程序尝试读取.jar文件的输出有关,这使我认为我的文件输入方式或如何捕获输出仍然存在问题。
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
我遇到了一系列代码问题,我在解决问题的同时进行了更新。以下是现在运行正确的最终代码。
doctorProc.StartInfo.FileName = "java"; doctorProc.StartInfo.Arguments = "-jar unluac.jar " + fileDirectory; File.Open((selectedDirectory + newFileDirectory), FileMode.Open, FileAccess.ReadWrite))); doctorProc.StartInfo.WorkingDirectory = Directory.GetCurrentDirectory(); doctorProc.StartInfo.RedirectStandardOutput = true; doctorProc.StartInfo.UseShellExecute = false; doctorProc.Start(); String luaScript = doctorProc.StandardOutput.ReadToEnd(); File.WriteAllText(Path.Combine(finalOutputDirectory,fileName), luaScript); doctorProc.WaitForExit();主要问题在于我输入到程序中的数据。程序需要 -jar unluac.exe,我现在已经更新了它。 我的问题受到其他错误的影响,正如上面记录的那样,最终问题是我的导出格式出现了小错误。
所以这个最终代码可以正常运行,我的错误已经解决。希望这可能有助于一些希望做类似事情的人。
之前有一个评论者给了我帮助,但由于我已经解决了那个特定问题,他删除了自己的帖子。无论如何,非常感谢他!我真的很感激您的帮助!
还要感谢那些编辑我的问题的人,这有助于我学习如何发布更好的帖子。