有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java启动。来自C#的jar文件。未找到属性文件

我一直在用C#开发一个Web服务,在那里我必须将Word docx文件转换为PDF。在搜索了很长时间后,我决定使用docx4j,一个java库来进行转换。这个当我从命令行运行jar文件时,它会按预期工作,但当我从C#代码通过系统启动它时。诊断学。在这个过程中,我得到了以下错误:

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();

我已经检查了电脑上的windows安全设置。jar文件及其所在的目录都设置为对所有用户的完全权限。我不明白为什么手动命令行调用和系统调用会得到不同的结果。诊断学。过程

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


共 (2) 个答案

  1. # 1 楼答案

    好吧,所以这个答案比我预想的要简单。通过移动。属性,并将其保存到与文件相同的文件夹中。jar文件,而不是嵌套在程序中,设法找到它们

    我想下次我应该先试试简单的方法,谢谢你的时间

  2. # 2 楼答案

    您需要设置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”); 过程启动(ps)

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