我正在使用Eclipse IDE进行编程。在关注Apache POI的教程之后:
https://www.youtube.com/watch?v=RsrF2Ku7ad4
我通过eclipse和以下链接创建了一个可执行jar:http://help.eclipse.org/mars/index.jsp?topic=%2Forg.eclipse.jdt.doc.user%2Ftasks%2Ftasks-37.htm
从菜单栏的“文件”菜单中,选择“导出”。
展开Java节点并选择Runnable JAR文件。单击“下一步”。
在Runnable JAR导出向导Runnable JAR文件规范页面中,我选择用于创建可运行JAR的WriteExcel启动配置。
在导出目标字段中,我将其放在我的Eclipse工作区中。
然后我选择了包所需的库到生成的JAR文件中。
然后我在Windows中将JAR文件与Java(TM)Platform SE二进制文件相关联。 但是,当我双击它时,它不会像我在Eclipse中运行程序时那样创建excel文件。从命令行运行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();
}
}
答案 0 :(得分:0)
小代码修复后
来自
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文件时没有执行,主要原因可能是
使用较新的JDK版本编译Jar文件,然后分配JRE执行Jar文件(在两台PC上查看java -version
)
已分配错误的应用程序来执行Jar文件
在注册表中检查密钥HKEY_CLASSES_ROOT\jarfile\shell\open\command
的值,它必须与"C:\Program Files\Java\jre1.8.0_66\bin\javaw.exe" -jar "%1" %*
类似(路径取决于安装的版本)