从C#启动.jar文件 - 找不到.properties文件

时间:2016-04-28 13:34:08

标签: java c# log4j docx4j

我一直在使用C#开发Web服务,我必须将Word docx文件转换为PDF。经过很长一段时间的搜索,我选择了docx4j这个java库来进行转换。当我从命令行运行它时,.jar文件按预期工作,但是当我从C#代码通过System.Diagnostics.Process启动时,我收到以下错误:

log4j:WARN No appenders could be found for logger (org.docx4j.jaxb.Context).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

...

WARN org.docx4j.utils.ResourceUtils .getResource line 84 - Couldn't get resource: docx4j.properties
WARN org.docx4j.Docx4jProperties .init line 22 - Couldn't find/read docx4j.properties; docx4j.properties not found via classloader.

拨打电话的C#代码如下所示:

        Process javaCall = new Process();

        var dir = HttpContext.Current.Server.MapPath("~");

        ProcessStartInfo startInfo = new ProcessStartInfo();
        startInfo.Arguments = "-Xmx2048m -jar \"" + dir + "\\App_Data\\DocxToPDF.jar\" \"" + sourcePath + "\"";
        startInfo.FileName = "\"" + System.Configuration.ConfigurationManager.AppSettings["JdkFilePath"] + "\"";
        startInfo.UseShellExecute = false;

        javaCall.StartInfo = startInfo;
        javaCall.Start();

        javaCall.WaitForExit();

我已经检查了.jar文件中的Windows安全设置及其所在的目录,并且两者都设置为对所有用户的完全权限。我不明白为什么我从手动命令行调用和System.Diagnostics.Process中得到不同的结果。

我非常感谢您的帮助,如果您需要,我会提供更多信息。

2 个答案:

答案 0 :(得分:0)

好吧,所以答案比我想象的容易。通过将.properties移动到与.jar文件相同的文件夹而不是将它们嵌套在已找到它们的程序中...

我想我下次应该先尝试一下这个简单的修复,谢谢你的时间。

答案 1 :(得分:0)

您需要设置环境变量java.exe可执行文件的路径或指定java.exe的完整路径。

ProcessStartInfo ps = new ProcessStartInfo(@" c:\ Program Files \ java \ jdk1.7.0 \ bin \ java.exe",@" -jar C:\ Users \ Owner \ Desktop \与myJarFile.jar&#34);  的Process.Start(PS);

默认情况下,命令行知道java路径,但ProcessStartInfodoes不知道java在哪里