ローカル ファイルから Excel シートを取得し、計算のためにプログラムに指定された値をアップロードするプログラムを Java で作成しています。Eclipse 内でコンパイルすると、すべて想定どおりに動作しますが、実行可能な jar ファイルを作成すると、「Java 例外が発生しました」というポップアップ エラーが表示されます。コードを調べて、メソッドを削除してスプレッドシートから値をロードすると、実行可能な jar が正常に動作します。しかし、値をロードするためにコードを元に戻すと、壊れます。プログラム全体を壊すこのコード ブロックで何が起きているのでしょうか?
private static void loadValues() throws IOException{
//FileInputStream file = new FileInputStream(new File("src/PricingData.xls"));
FileInputStream file = new FileInputStream(new File("F:/Sales/Stitt/PricingData.xls"));
HSSFWorkbook wb = new HSSFWorkbook(file);
HSSFSheet sheet = wb.getSheetAt(0);
Cell cell = sheet.getRow(1).getCell(1);
MLPPSF = cell.getNumericCellValue();
cell = sheet.getRow(2).getCell(1);
COPPSF = cell.getNumericCellValue();
cell = sheet.getRow(3).getCell(1);
GPPSF = cell.getNumericCellValue();
cell = sheet.getRow(4).getCell(1);
UPFINISHED = cell.getNumericCellValue();
cell = sheet.getRow(5).getCell(1);
LOWFINISHED = cell.getNumericCellValue();
cell = sheet.getRow(6).getCell(1);
DPPSF = cell.getNumericCellValue();
cell = sheet.getRow(8).getCell(1);
onePanelWaterHeater = cell.getNumericCellValue();
cell = sheet.getRow(9).getCell(1);
twoPanelWaterHeater = cell.getNumericCellValue();
cell = sheet.getRow(10).getCell(1);
saferoomCost = cell.getNumericCellValue();
cell = sheet.getRow(11).getCell(1);
solarPVCost = cell.getNumericCellValue();
cell = sheet.getRow(12).getCell(1);
metlundCost = cell.getNumericCellValue();
cell = sheet.getRow(13).getCell(1);
ervCost = cell.getNumericCellValue();
cell = sheet.getRow(14).getCell(1);
gasFireplaceCost = cell.getNumericCellValue();
cell = sheet.getRow(15).getCell(1);
woodFireplaceCost = cell.getNumericCellValue();
cell = sheet.getRow(18).getCell(1);
allCabVanPercent = cell.getNumericCellValue();
cell = sheet.getRow(19).getCell(1);
allAppliancePercent = cell.getNumericCellValue();
cell = sheet.getRow(20).getCell(1);
allLightFixPercent = cell.getNumericCellValue();
cell = sheet.getRow(21).getCell(1);
allPlumbFixPercent = cell.getNumericCellValue();
cell = sheet.getRow(22).getCell(1);
allFloorCoveringPercent = cell.getNumericCellValue();
cell = sheet.getRow(25).getCell(1);
DepositPercent = cell.getNumericCellValue();
cell = sheet.getRow(26).getCell(1);
Draw1Percent = cell.getNumericCellValue();
cell = sheet.getRow(27).getCell(1);
Draw2Percent = cell.getNumericCellValue();
cell = sheet.getRow(28).getCell(1);
Draw3Percent = cell.getNumericCellValue();
cell = sheet.getRow(29).getCell(1);
Draw4Percent = cell.getNumericCellValue();
cell = sheet.getRow(30).getCell(1);
Draw5Percent = cell.getNumericCellValue();
cell = sheet.getRow(31).getCell(1);
Draw6Percent = cell.getNumericCellValue();
cell = sheet.getRow(32).getCell(1);
Draw7Percent = cell.getNumericCellValue();
cell = sheet.getRow(33).getCell(1);
Draw8Percent = cell.getNumericCellValue();
cell = sheet.getRow(34).getCell(1);
Draw9Percent = cell.getNumericCellValue();
}
そして、主なものは次のとおりです。
public static void main(String[] args) {
// TODO Auto-generated method stub
initialize();
try {
loadValues();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
showGUI();
}
編集:
コマンドラインで実行したときのエラーは次のとおりです。
C:\Documents and Settings\Conference Room\SESI>java -jar SESI.jar
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/poi/ss/use
rmodel/Cell
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Unknown Source)
at java.lang.Class.getMethod0(Unknown Source)
at java.lang.Class.getMethod(Unknown Source)
at sun.launcher.LauncherHelper.getMainMethod(Unknown Source)
at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)
Caused by: java.lang.ClassNotFoundException: org.apache.poi.ss.usermodel.Cell
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 6 more
C:\Documents and Settings\Conference Room\SESI>