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

Jar可执行我做错了什么?

鲍永春
2023-03-14

我正在使用EclipseIDE编程。在完成有关Apache POI的教程后:

https://www.youtube.com/watch?v=RsrF2Ku7ad4

我通过eclipse和以下链接创建了一个可执行jar:http://help.eclipse.org/mars/index.jsp?topic=/org.eclipse.jdt.doc.user/tasks/tasks-37.htm

>

  • 从菜单栏的文件菜单中,选择导出。

    展开Java节点并选择Runnable JAR file。点击下一步。

    在Runnable JAR导出向导Runnable JAR文件规范页面中,我选择了用于创建Runnable JAR的WriteExcel启动配置

    在导出目的地字段中,我将其放置在Eclipse工作区中。

    然后我选择将所需的库打包到生成的JAR文件中。

    然后,我将JAR文件与windows中的Java(TM)平台SE二进制文件相关联。但是,当我双击它时,它不会像我在Eclipse中运行程序时那样创建excel文件。从comand行运行jar文件也不会返回错误或创建excel文件。

    很明显我做错了任何帮助都是非常感激的。

    编辑:使用的代码与youtube教程相同:

    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.util.Date;
    
    import org.apache.poi.hssf.usermodel.HSSFCell;
    import org.apache.poi.hssf.usermodel.HSSFRow;
    import org.apache.poi.hssf.usermodel.HSSFSheet;
    import org.apache.poi.hssf.usermodel.HSSFWorkbook;
    import org.apache.poi.ss.usermodel.CellStyle;
    import org.apache.poi.ss.usermodel.DataFormat;
    
    public class WriteExcel {
    	public static void main(String[] args) throws IOException {
    		HSSFWorkbook workbook = new HSSFWorkbook();
    		HSSFSheet sheet = workbook.createSheet("FirstExcelSheet");
    		HSSFRow row = sheet.createRow(0);
    		HSSFCell cell = row.createCell(0);
    		cell.setCellValue("1. Cell");
    		
    		cell = row.createCell(1);
    		DataFormat format = workbook.createDataFormat();
    		CellStyle dateStyle = workbook.createCellStyle();
    		dateStyle.setDataFormat(format.getFormat("dd.mm.yyyy"));
    		cell.setCellStyle(dateStyle);
    		cell.setCellValue(new Date());
    		
    		row.createCell(2).setCellValue("3. Cell");
    		
    		sheet.autoSizeColumn(1);
    		
    		workbook.write(new FileOutputStream("excel.xls"));
    		workbook.close();
    	}
    }
  • 共有1个答案

    贝自怡
    2023-03-14

    经过一个小代码修复

    从…起

    workbook.write(new FileOutputStream("excel.xls"));
    workbook.close();
    

    FileOutputStream fos = new FileOutputStream("excel.xls");
    workbook.write(fos);
    fos.close();
    

    并执行您提到的步骤来生成Jar文件。我得到了一个包含以下内容的Jar文件(Jar tf WriteExcel.Jar的结果)

    META-INF/MANIFEST.MF
    org/
    org/eclipse/
    org/eclipse/jdt/
    org/eclipse/jdt/internal/
    org/eclipse/jdt/internal/jarinjarloader/
    org/eclipse/jdt/internal/jarinjarloader/JIJConstants.class
    org/eclipse/jdt/internal/jarinjarloader/JarRsrcLoaderManifestInfo.class
    org/eclipse/jdt/internal/jarinjarloader/JarRsrcLoader.class
    org/eclipse/jdt/internal/jarinjarloader/RsrcURLConnection.class
    org/eclipse/jdt/internal/jarinjarloader/RsrcURLStreamHandler.class
    org/eclipse/jdt/internal/jarinjarloader/RsrcURLStreamHandlerFactory.class
    WriteExcel.class
    XLStoCSVConvert.class
    org/apache/
    org/apache/poi/
    org/apache/poi/ss/
    org/apache/poi/ss/examples/
    org/apache/poi/ss/examples/UpdateWorkBook.class
    org/apache/poi/ss/examples/ToCSVExcelFilenameFilter.class
    org/apache/poi/ss/examples/ToCSV.class
    org/apache/poi/ss/examples/CreateNewWorkBook.class
    poi-ooxml-3.10.1.jar
    poi-ooxml-schemas-3.10.1.jar
    xmlbeans-2.6.0.jar
    stax-api-1.0.1.jar
    dom4j-1.6.1.jar
    xml-apis-1.0.b2.jar
    poi-3.10.1.jar
    commons-codec-1.5.jar
    

    文件的内容META-INF/MANIFEST。MF

    Manifest-Version: 1.0
    Rsrc-Class-Path: ./ poi-ooxml-3.10.1.jar poi-ooxml-schemas-3.10.1.jar
     xmlbeans-2.6.0.jar stax-api-1.0.1.jar dom4j-1.6.1.jar xml-apis-1.0.b2
     .jar poi-3.10.1.jar commons-codec-1.5.jar
    Class-Path: .
    Rsrc-Main-Class: WriteExcel
    Main-Class: org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader
    

    使用java-Jar WriteExcel执行Jar。jar生成文件excel。xls

    使用双击编辑运行如果在Windows资源管理器中双击Jar文件时未执行,主要原因可能是

    >

  • Jar文件是用较新的JDK版本编译的,然后是分配给执行Jar文件的JRE(在两台电脑上用java-version检查)

    分配了一个错误的应用程序来执行Jar文件
    在注册表中检查注册表项HKEY_CLASSES\u ROOT\jarfile\shell\open\command的值,它必须类似于“C:\Program Files\Java\jre1.8.0\u 66\bin\javaw.exe”-Jar“%1”%*(路径取决于安装的版本)

  •  类似资料:
    • 我正在做一个项目,我的意图是运行一个玉米作业,并发送邮件给我的朋友,祝他们生日,我能够从MySQL DB获取电子邮件,并将其与当前日期进行比较,但当涉及到发送电子邮件时,我得到NullPointerException。 我确信应用程序属性没有问题,我在其他项目中也使用了它们,它们的功能正常 这是我得到以下信息的错误

    • 我正在用spark处理数据,它可以处理一天的数据(40G),但用OOM处理一周的数据失败了: null

    • 问题内容: 我正在使用Datanucleus和JDO开发用于嵌入式H2数据库的桌面应用程序。当我从Eclipse运行它时,一切正常,但是当我尝试用它制作可执行jar时,它将停止工作。我收到以下错误: org.datanucleus.exceptions.NucleusUserException:已指定持久性进程使用名称为“ jdo”的ClassLoaderResolver,但DataNucleus

    • 11:15:57创建表如果不存在tblcompany(companyid INT(11)无符号NOT NULL,custfirst VARCHAR(50),custlast VARCHAR(50),company VARCHAR(50),custphone VARCHAR(50), custemail VARCHAR(50),主键(companyid),索引(companyid),约束外键(com

    • 每当我尝试执行“gcloud app deploy”时,我都会得到以下结果。我只是不知道为什么。 C:\Users\charl\Desktop\Apps\webTest\webTest

    • 我正在尝试使用JSch连接到服务器,然后执行交互式命令。 你能告诉我我错过了什么吗?这种东西每次都挂着,我看不出有什么理由这样做。特别是在发送密码之前,我特别等待密码字符串(实际上是而不是)。 这就是我正在做的: 以user1/pass1身份登录 无论如何,这里是主要的执行函数,它接受user1/pass1、user2/pass2和命令行。 这是我的错误消息: 这是promptKeyboardIn