当前位置: 首页 > 知识库问答 >
问题:

确认正在加载jar文件

岳阳文
2023-03-14

如何确认我的JAR文件已加载到Coldfusion中?我在CF10上。

我目前得到这个错误:

Could not find the ColdFusion component or interface org.apache.batik.transcoder.image.PNGTranscoder. 

我的网站结构如下:

/root
/root/application.cfc
/root/jar/batik-1.7/

在我的申请中。cfc,我有以下代码:

<cfset This.javaSettings = {loadPaths: ["jar/"],loadColdFusionClassPath: true,reloadOnChange: true,watchInterval: 2}>

这是我调用一切的代码:

<cffunction name="getPng" access="public" output="true">        
    <cfsavecontent variable="out">
    <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
    <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
         width="612px" height="792px" viewBox="0 0 612 792" enable-background="new 0 0 612 792" xml:space="preserve">
    <path fill="##006838" stroke="##414042" stroke-miterlimit="10" d="M416.413,388.223c0,6.627-5.373,12-12,12H140.317
        c-6.627,0-12-5.373-12-12V272.54c0-6.627,5.373-12,12-12h264.096c6.627,0,12,5.373,12,12V388.223z"/>
    <text id="HomeScore" transform="matrix(1 0 0 1 358.5391 361.333)" fill="##F1F2F2" font-family="'ArialMT'" font-size="24">3</text>
    <text id="Home" transform="matrix(1 0 0 1 155.3018 361.333)" fill="##F1F2F2" font-family="'ArialMT'" font-size="24">TEAM B</text>
    <text id="VisitorScore" transform="matrix(1 0 0 1 358.5391 301.8096)" fill="##F1F2F2" font-family="'ArialMT'" font-size="24">2</text>
    <text id="Visitor" transform="matrix(1 0 0 1 155.3018 301.8096)" fill="##F1F2F2" font-family="'ArialMT'" font-size="24">TEAM A</text>
    </svg>
    </cfsavecontent>

    <cfreturn out>
</cffunction>

<cffunction name="renderPng" access="public" output="false">
    <cfscript>

        /*http://cfsearching.blogspot.ca/2008/02/cool-text-effects-with-svg-and-batik.html*/
        pngPath = "test.png";
        pngFile = expandPath(pngPath);

        transcoder = createObject("java", "org.apache.batik.transcoder.image.PNGTranscoder").init();
        inputStream = createObject("java", "java.io.StringBufferInputStream").init(getPng());
        input = createObject("java", "org.apache.batik.transcoder.TranscoderInput").init(inputStream);
        outputStream = createObject("java", "java.io.FileOutputStream").init(ExpandPath(pngFile));
        output = createObject("java", "org.apache.batik.transcoder.TranscoderOutput").init(outputStream);
        transcoder.transcode(input, output);
        outputStream.close();

        return pngFile;
    </cfscript>

</cffunction>

<cfscript>
    // CREATE OBJECT 
    obj = createObject("component", "#request.cfcPath#.utils");
    // CALL THE FUNCTION
    png = obj.renderPng();
</cfscript>

更新#1

我在检查administor时发现了设置摘要,其中列出了服务器Java类路径。我添加了jar文件的位置并重新启动了服务器。即使路径存在于Administrator中的类路径中,我仍然会遇到相同的错误。

更新2

添加了缺少的属性“type”,并出现以下错误:

<代码>java。lang.NoClassDefFoundError:org/apache/batik/dom/util/DocumentFactory

第554行:transcoder=createObject(“java”,“org.apache.batik.transcoder.image.PNGTranscoder”)。init()

完整堆栈跟踪

更新3

我application.cfc有这个

<代码>

我调用了onApplication ationStart(),但仍然收到同样的错误。

此时,我已经删除了ColdFusion类路径中的条目,现在它又回到了默认值空。

我希望它可以在我使用共享主机时使用javaSetings变量加载jar文件。

共有2个答案

宋嘉懿
2023-03-14

我们有一个类似的问题,类路径的顺序导致了CF2021中的问题。我首先包含了一个jar文件,但是应该在加载所有主库后再做。所以,根据我的经验,意识到当向类路径添加新jar时,总是在末尾添加。

公羊玉泽
2023-03-14

更新:

(聊天摘要)Batik 1.7包括两个已与CF 10捆绑在一起的xml解析库的更新版本。加载这两个版本将导致ClassCastException

组织。阿帕奇。xerces。jaxp。不能将SAXParserFactoryImpl转换为javax。xml。解析器。SAXParserFactory

为了避免该错误,请从batik-1.7/lib目录中删除这两个xml JAR,以便不加载它们:

  /batik-1.7/lib/xerces_2_5_0.jar
  /batik-1.7/lib/xml-apis.jar

此外,loadPaths不是递归的。因此,如果子文件夹中包含任何jar,则必须同时包含这些子文件夹的路径。即

   This.javaSettings = {loadPaths: ["/jar/batik-1.7","/jar/batik-1.7/lib"]};

如果您对this.java设置进行了更改,请务必重新启动应用程序以确保应用了更改。

找不到ColdFusion组件或接口

使用createObject时,需要包含对象“type”。否则,它使用默认类型“component”。这意味着CF正在使用您提供的路径搜索组件/cfc,即“org.apache.batik.transcoder.image.PNGTranscoder”。由于您的应用程序可能不包含具有该路径的cfc,因此您会收到上面的错误消息。

将类型"java"添加到您的所有createObject调用中,它应该可以工作:

createObject("java", "org.apache.batik.transcoder.image.PNGTranscoder").init();
 类似资料:
  • 问题内容: 问题说明了一切。 在我的情况下,特殊之处在于当前工作目录不是jar文件的位置,而是(我的jar文件由Windows使用右键菜单启动,我想将文件夹的路径作为参数传递给jar) 。 现在,我想加载一个与jar相同的文件夹中的配置文件。该文件的目的当然是为jar提供设置。对我来说重要的是,xml文件 位于 jar文件 之外 ,以便于编辑。 我很难加载该文件。Windows执行该行 调用整个过

  • 我正在尝试从可执行JAR文件加载图像。 我跟踪了这里的信息,然后是这里的信息。 这是检索图像的函数: 这就是它的名称: 这是一个简单的对象。我也不会得到NullPointerException,除非它被UI屏蔽。 我检查了JAR文件,图像位于: /图片/标识1。巴布亚新几内亚 当前代码在eclipse中以及导出到JAR并在终端中运行时都有效,但在双击JAR时不起作用,在这种情况下,图标是默认的JF

  • 本文向大家介绍在WordPress中加载模板文件的正确方法,包括了在WordPress中加载模板文件的正确方法的使用技巧和注意事项,需要的朋友参考一下 从WordPress 3.0开始,有一个名为的函数get_template_part(),该函数已在新的二十零默认WordPress主题中使用了很多。这是通过使用诸如get_header()包含header.php文件之类的功能来包含部分主题的通常

  • 问题内容: 我正在尝试将CS​​V文件加载到AngularJS中,以便可以对内容进行一些操作。它不是我想要的那样工作。为了测试它是否正确加载,我将其加载到文本区域中以查看内容。 当我加载文件时,它说它已正确加载,但在加载第二个CSV文件之前似乎没有触发onload()事件,在这种情况下,FIRST文件显示在文本区域中。 HTML: JS: 当我将其放入JSFiddle时,该文件根本不会出现在tex

  • 我应该有一个正常的贴图如下: 但当我加载场景时,或者从inspector中的另一个场景切换(例如,单击“场景/菜单”,然后单击此场景),或者在游戏中转移到此场景(),精灵会随机不可见。 每次都有一些精灵隐形,下一次隐形的可能就不一样了。我怀疑这是Unity编辑器的问题,因为即使我不在播放模式下也会发生这种情况。 在中,我肯定会找到这些sprite(不是null)。他们就是不出现。我必须重新加载精灵

  • 我已经用Gradle 4.0.1安装了Android Studio 2.3.3,它工作得很好,但有一天它似乎没有正确加载。我构建了Gradle,清理并重建了我的项目,它表明构建是正确的,我甚至可以编译,但IDE中的所有内容都是红色的,就像它没有加载库一样。会是什么?很抱歉解释得太短,但这是我的全部。