【问题标题】:Cannot load jxls transformer [closed]无法加载 jxls 变压器
【发布时间】:2016-03-19 01:00:41
【问题描述】:

我的项目出了什么问题。我已经导入了所有依赖项,但它仍然输出错误:

Output errors

这是我导入的列表依赖项: Dependancies package image

这是我的测试代码:

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package brouillon;

import controllers.RetardJpaController;
import entites.Retard;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;
import javax.persistence.Persistence;
import org.jxls.common.Context;
import org.jxls.util.JxlsHelper;

/**
 *
 * @author Vals
 */
public class Brouillon {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) throws IOException {
        // TODO code application logic here
        RetardJpaController ctr = new RetardJpaController(Persistence.createEntityManagerFactory("BrouillonPU"));
        List<Retard> liste = ctr.findRetardEntities();
        try(InputStream is = Brouillon.class.getResourceAsStream("ressources/object_collection_template.xls")) {
            try (OutputStream os = new FileOutputStream("object_collection_output.xls")) {
                Context context = new Context();
                context.putVar("retards", liste);
                //JxlsHelper.getInstance().processTemplate(is, os, context);
                JxlsHelper jh = JxlsHelper.getInstance();
                jh.processTemplate(is, os, context);
            }
        }
    }

}

【问题讨论】:

  • 请将错误以文本形式发布在问题中,而不是作为文本屏幕截图的链接。
  • 搜索该错误也会很快找到slf4j.org/codes.html...
  • Exception in thread "main" java.lang.IllegalStateException: Cannot load XLS transformer. Please make sure a Transformer implementation is in classpath at org.jxls.util.JxlsHelper.createTransformer(JxlsHelper.java:189) at org.jxls.util.JxlsHelper.createTransformer(JxlsHelper.java:189) at org.jxls.util.JxlsHelper.processTemplate(JxlsHelper.java:88) at brouillon.Brouillon.main(Brouillon.java:39)
  • 不,请不要将其作为评论发布。 编辑问题以将其包含在此处而不是链接。

标签: java apache apache-poi classpath jxls


【解决方案1】:

这对我来说看起来不对:

    try(InputStream is = Brouillon.class.getResourceAsStream("ressources/object_collection_template.xls")) {

注意拼写错误:"ressources"。这足以在查找中完成。尝试取出第二个“s”,看看它是否有效。

可能比这更糟。如果资源是代码源,那么它的内容将在 CLASSPATH 中,但文件夹本身不会。在这种情况下,您只需要文件名。

尝试查看您在运行时使用的 CLASSPATH 并查看其中的内容。这样就清楚了。

“我已经导入了所有依赖项”——这是你最大的问题。大多数初学者和没有经验的程序员都会陷入“我做的一切都是正确的——为什么计算机要迫害我?”这种态度的牺牲品。如果您采取以“我做错了什么?”开头和结尾的态度,您会变得更快。并无情地检查你的错误。

【讨论】:

  • 我将模板移动到主类的同一个包中并尝试了这个:`try(InputStream is = Brouillon.class.getResourceAsStream("object_collection_template.xls")) {`但是没有用
  • 没用?你得到了什么例外? InputStream 是否为空?与主类相同的包?这是否意味着您的主类不在一个包中?来自您的更多非信息。投票结束。
  • 同样的错误:Exception in thread "main" java.lang.IllegalStateException: Cannot load XLS transformer. Please make sure a Transformer implementation is in classpath at org.jxls.util.JxlsHelper.createTransformer(JxlsHelper.java:189) at org.jxls.util.JxlsHelper.createTransformer(JxlsHelper.java:189) at org.jxls.util.JxlsHelper.processTemplate(JxlsHelper.java:88) at brouillon.Brouillon.main(Brouillon.java:39) Java Result: 1
  • 你的主班第 39 行是哪一行?
  • jh.processTemplate(is, os, context);
猜你喜欢
  • 2017-12-27
  • 1970-01-01
  • 2016-07-14
  • 2021-10-02
  • 2021-06-04
  • 2020-08-18
  • 2021-01-14
  • 2022-01-11
  • 1970-01-01
相关资源
最近更新 更多