Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在单元测试期间找到资源文本文件,但在程序从Netbeans运行时未找到_Java_Javafx - Fatal编程技术网

Java 在单元测试期间找到资源文本文件,但在程序从Netbeans运行时未找到

Java 在单元测试期间找到资源文本文件,但在程序从Netbeans运行时未找到,java,javafx,Java,Javafx,单元测试输出是这样的 readNameDataFile test reading text file... User directory: C:\Users\Admin\Documents\NetBeansProjects\Traveller Current directory: . File path + name: names/names.txt ClassLoader :file:/C:/Users/Admin/Documents/NetBeansProjects/Traveller/bu

单元测试输出是这样的

readNameDataFile
test reading text file...
User directory: C:\Users\Admin\Documents\NetBeansProjects\Traveller
Current directory: .
File path + name: names/names.txt
ClassLoader :file:/C:/Users/Admin/Documents/NetBeansProjects/Traveller/build/classes/names/names.txt
test first NameData object is correct...
test fifth NameData object is correct...
test last NameData object is correct...
这是什么

Executing C:\Users\Admin\Documents\NetBeansProjects\Traveller\dist\run667857124\Traveller.jar using platform C:\Program Files\Java\jdk1.8.0_181\jre/bin/java
Database starting in embedded mode.
Connected to database TravellerDB
User directory: C:\Users\Admin\Documents\NetBeansProjects\Traveller
Current directory: .
File path + name: names/names.txt
ClassLoader : jar:file:/C:/Users/Admin/Documents/NetBeansProjects/Traveller/dist/run667857124/Traveller.jar!/names/names.txt
java.io.FileNotFoundException: file:\C:\Users\Admin\Documents\NetBeansProjects\Traveller\dist\run667857124\Traveller.jar!\names\names.txt (The filename, directory name, or volume label syntax is incorrect)
    at java.io.FileInputStream.open0(Native Method)
Shutting TravellerDB database down...
    at java.io.FileInputStream.open(FileInputStream.java:195)
    at java.io.FileInputStream.<init>(FileInputStream.java:138)
    at java.util.Scanner.<init>(Scanner.java:611)
    at io.github.drw.traveller.io.FileReader.readNameDataFile(FileReader.java:35)
    at io.github.drw.traveller.names.GeneratorModel.initNameMaps(GeneratorModel.java:85)
    at io.github.drw.traveller.names.GeneratorModel.<init>(GeneratorModel.java:31)
    at io.github.drw.traveller.names.GeneratorController.initialize(GeneratorController.java:65)
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2548)
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2441)
    at javafx.fxml.FXMLLoader.access$2700(FXMLLoader.java:103)
    at javafx.fxml.FXMLLoader$IncludeElement.constructValue(FXMLLoader.java:1143)
    at javafx.fxml.FXMLLoader$ValueElement.processStartElement(FXMLLoader.java:746)
    at javafx.fxml.FXMLLoader.processStartElement(FXMLLoader.java:2707)
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2527)
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2441)
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3214)
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3175)
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3148)
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3124)
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3104)
    at javafx.fxml.FXMLLoader.load(FXMLLoader.java:3097)
    at io.github.drw.traveller.Main.start(Main.java:28)
    at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$161(LauncherImpl.java:863)
    at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$174(PlatformImpl.java:326)
    at com.sun.javafx.application.PlatformImpl.lambda$null$172(PlatformImpl.java:295)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.sun.javafx.application.PlatformImpl.lambda$runLater$173(PlatformImpl.java:294)
    at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
    at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
    at com.sun.glass.ui.win.WinApplication.lambda$null$147(WinApplication.java:177)
    at java.lang.Thread.run(Thread.java:748)
Exception in Application start method
Derby shut down normally.
java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:389)
    at com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:328)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:767)
Caused by: java.lang.RuntimeException: Exception in Application start method
    at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:917)
    at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$154(LauncherImpl.java:182)
    at java.lang.Thread.run(Thread.java:748)
Caused by: javafx.fxml.LoadException: 
file:/C:/Users/Admin/Documents/NetBeansProjects/Traveller/dist/run667857124/Traveller.jar!/io/github/drw/traveller/names/GeneratorView.fxml
file:/C:/Users/Admin/Documents/NetBeansProjects/Traveller/dist/run667857124/Traveller.jar!/io/github/drw/traveller/Main.fxml:38

    at javafx.fxml.FXMLLoader.constructLoadException(FXMLLoader.java:2601)
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2579)
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2441)
    at javafx.fxml.FXMLLoader.access$2700(FXMLLoader.java:103)
    at javafx.fxml.FXMLLoader$IncludeElement.constructValue(FXMLLoader.java:1143)
    at javafx.fxml.FXMLLoader$ValueElement.processStartElement(FXMLLoader.java:746)
    at javafx.fxml.FXMLLoader.processStartElement(FXMLLoader.java:2707)
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2527)
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2441)
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3214)
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3175)
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3148)
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3124)
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3104)
    at javafx.fxml.FXMLLoader.load(FXMLLoader.java:3097)
    at io.github.drw.traveller.Main.start(Main.java:28)
    at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$161(LauncherImpl.java:863)
    at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$174(PlatformImpl.java:326)
    at com.sun.javafx.application.PlatformImpl.lambda$null$172(PlatformImpl.java:295)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.sun.javafx.application.PlatformImpl.lambda$runLater$173(PlatformImpl.java:294)
    at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
    at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
    at com.sun.glass.ui.win.WinApplication.lambda$null$147(WinApplication.java:177)
    ... 1 more
Caused by: java.lang.NullPointerException
    at io.github.drw.traveller.io.FileReader.readNameDataFile(FileReader.java:44)
    at io.github.drw.traveller.names.GeneratorModel.initNameMaps(GeneratorModel.java:85)
    at io.github.drw.traveller.names.GeneratorModel.<init>(GeneratorModel.java:31)
    at io.github.drw.traveller.names.GeneratorController.initialize(GeneratorController.java:65)
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2548)
    ... 23 more
Exception running application io.github.drw.traveller.Main
Java Result: 1
Deleting directory C:\Users\Admin\Documents\NetBeansProjects\Traveller\dist\run667857124
jfxsa-run:
BUILD SUCCESSFUL (total time: 8 seconds)
使用平台C:\Program Files\Java\jdk1.8.0\u 181\jre/bin/Java执行C:\Users\Admin\Documents\NetBeansProjects\traveler\dist\run667857124\traveler.jar
数据库以嵌入式模式启动。
已连接到数据库TravelerDB
用户目录:C:\Users\Admin\Documents\NetBeansProjects\Traveler
当前目录:。
文件路径+名称:names/names.txt
ClassLoader:jar:file:/C:/Users/Admin/Documents/NetBeansProjects/traveler/dist/run667857124/traveler.jar/名称/names.txt
java.io.FileNotFoundException:文件:\C:\Users\Admin\Documents\NetBeansProjects\traveler\dist\run667857124\traveler.jar\names\names.txt(文件名、目录名或卷标语法不正确)
位于java.io.FileInputStream.open0(本机方法)
正在关闭TravelerDB数据库。。。
在java.io.FileInputStream.open(FileInputStream.java:195)
位于java.io.FileInputStream。(FileInputStream.java:138)
位于java.util.Scanner.(Scanner.java:611)
位于io.github.drw.traveler.io.FileReader.readNameDataFile(FileReader.java:35)
在io.github.drw.traveller.names.GeneratorModel.initNameMaps(GeneratorModel.java:85)
在io.github.drw.traveler.names.GeneratorModel.(GeneratorModel.java:31)
在io.github.drw.traveler.names.GeneratorController.initialize(GeneratorController.java:65)
在javafx.fxml.fxmloader.loadImpl(fxmloader.java:2548)
在javafx.fxml.fxmloader.loadImpl(fxmloader.java:2441)
在javafx.fxml.fxmloader.access$2700(fxmloader.java:103)
位于javafx.fxml.fxmloader$IncludeElement.constructValue(fxmloader.java:1143)
在javafx.fxml.fxmloader$ValueElement.processStartElement(fxmloader.java:746)
在javafx.fxml.fxmloader.processStartElement(fxmloader.java:2707)
在javafx.fxml.fxmloader.loadImpl(fxmloader.java:2527)
在javafx.fxml.fxmloader.loadImpl(fxmloader.java:2441)
在javafx.fxml.fxmloader.loadImpl(fxmloader.java:3214)
在javafx.fxml.fxmloader.loadImpl(fxmloader.java:3175)
在javafx.fxml.fxmloader.loadImpl(fxmloader.java:3148)
在javafx.fxml.fxmloader.loadImpl(fxmloader.java:3124)
在javafx.fxml.fxmloader.loadImpl(fxmloader.java:3104)
在javafx.fxml.fxmloader.load(fxmloader.java:3097)
位于io.github.drw.traveler.Main.start(Main.java:28)
在com.sun.javafx.application.launchempl.lambda$launchApplication1$161(launchempl.java:863)
位于com.sun.javafx.application.PlatformImpl.lambda$runAndWait$174(PlatformImpl.java:326)
位于com.sun.javafx.application.PlatformImpl.lambda$null$172(PlatformImpl.java:295)
位于java.security.AccessController.doPrivileged(本机方法)
com.sun.javafx.application.PlatformImpl.lambda$runLater$173(PlatformImpl.java:294)
位于com.sun.glass.ui.invokelateDispatcher$Future.run(invokelateDispatcher.java:95)
在com.sun.glass.ui.win.WinApplication.\u runLoop(本机方法)
位于com.sun.glass.ui.win.WinApplication.lambda$null$147(WinApplication.java:177)
运行(Thread.java:748)
应用程序启动方法中的异常
德比正常关闭。
java.lang.reflect.InvocationTargetException
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中
位于java.lang.reflect.Method.invoke(Method.java:498)
位于com.sun.javafx.application.LaunchImpl.launchApplicationWithArgs(LaunchImpl.java:389)
位于com.sun.javafx.application.LaunchImpl.launchApplication(LaunchImpl.java:328)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中
位于java.lang.reflect.Method.invoke(Method.java:498)
位于sun.launcher.launchelper$FXHelper.main(launchelper.java:767)
原因:java.lang.RuntimeException:应用程序启动方法中的异常
位于com.sun.javafx.application.LaunchImpl.launchApplication1(LaunchImpl.java:917)
在com.sun.javafx.application.launchempl.lambda$launchApplication$154(launchempl.java:182)
运行(Thread.java:748)
原因:javafx.fxml.LoadException:
文件:/C:/Users/Admin/Documents/NetBeansProjects/traveler/dist/run667857124/traveler.jar/io/github/drw/traveler/names/GeneratorView.fxml
文件:/C:/Users/Admin/Documents/NetBeansProjects/traveler/dist/run667857124/traveler.jar/io/github/drw/traveler/Main.fxml:38
位于javafx.fxml.fxmloader.constructLoadException(fxmloader.java:2601)
在javafx.fxml.fxmloader.loadImpl(fxmloader.java:2579)
在javafx.fxml.fxmloader.loadImpl(fxmloader.java:2441)
在javafx.fxml.fxmloader.access$2700(fxmloader.java:103)
位于javafx.fxml.fxmloader$IncludeElement.constructValue(fxmloader.java:1143)
在javafx.fxml.fxmloader$ValueElement.processStartElement(fxmloader.java:746)
在javafx.fxml.fxmloader.processStartElement(fxmloader.java:2707)
在javafx.fxml.fxmloader.loadImpl(fxmloader.java:2527)
在javafx.fxml.fxmloader.loadImpl(fxmloader.java:2441)
在javafx.fxml.fxmloader.loadImpl(fxmloader.java:3214)
在javafx.fxml.fxmloader.loadImpl(fxmloader.java:3175)
在javafx.fxml.fxmloader.loadImpl(fxmloader.java:3148)
在javafx.fxml.fxmloader.loadImpl(fxmloader.java:3124)
在javafx.fxml.fxmloader.loadImpl(fxmloader.java:3104)
在javafx.fxml.fxmloader.load(fxmloader.java:3097)
位于io.github.drw.traveler.Main.start(Main.java:28)
在com.sun.javafx.application.launchempl.lambda$launchApplication1$161(launchempl.java:863)
位于com.sun.javafx.application.PlatformImpl.lambda$runAndWait$174(PlatformImpl.java:326)
位于com.sun.javafx.application.PlatformImpl.lambda$null$1
package io.github.drw.traveller.io;

import io.github.drw.traveller.names.Gender;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

/**
 * Reads data in from files.
 *
 * @author admin
 */
public class FileReader {

private final String path;
private final String fileName;

public FileReader(String path, String fileName) {
    this.path = path;
    this.fileName = fileName;
}

public List<NameData> readNameDataFile() {
    ClassLoader classLoader = getClass().getClassLoader();
    System.out.println("User directory: " + System.getProperty("user.dir"));
    System.out.println("Current directory: " + new File("."));
    System.out.println("File path + name: " + path + "/" + fileName);
    System.out.println("ClassLoader : " + classLoader.getResource(path + "/" + fileName));
    Scanner scanner = null;
    final List<NameData> names = new ArrayList<>();
    File file = new File(classLoader.getResource(path + "/" + fileName).getFile());
    try {
        scanner = new Scanner(file);
        while (scanner.hasNextLine()) {
            String line = scanner.nextLine();
            String[] items = line.split(" ");
            names.add(processItems(items));
        }
    } catch (FileNotFoundException ex) {
        ex.printStackTrace();
    } finally {
        scanner.close();
    }
    return names;
}

private NameData processItems(String[] items) {
    Gender gender;
    String item;
    item = items[0];
    if (item.equals("MF")) {
        gender = Gender.BOTH;
    } else if (item.equals("MO")) {
        gender = Gender.MALE;
    } else {
        gender = Gender.FEMALE;
    }
    boolean canBeLastName;
    item = items[1];
    if (item.equals("LY")) {
        canBeLastName = true;
    } else {
        canBeLastName = false;
    }
    String value = items[2].toLowerCase();
    char[] characters = value.toCharArray();
    characters[0] = Character.toUpperCase(characters[0]);
    value = String.copyValueOf(characters);
    return new NameData(value, gender, canBeLastName);
}

}
package io.github.drw.traveller.io;

import io.github.drw.traveller.names.Gender;
import java.util.List;
import org.junit.Assert;
import org.junit.Test;

/**
 * Tests the FileReader functionality.
 *
 * @author admin
 */
public class FileReaderTest {

public FileReaderTest() {
}

/**
 * Test of readNameDataFile method, of class FileReader.
 */
@Test
public void testReadNameDataFile() {
    System.out.println("readNameDataFile");
    System.out.println("test reading text file...");
    FileReader instance = new FileReader("names", "names.txt");
    List<NameData> list = instance.readNameDataFile();
    int expectedSize = 5163;
    int actualSize = list.size();
    Assert.assertEquals(expectedSize, actualSize);
    System.out.println("test first NameData object is correct...");
    NameData actual, expected;
    expected = new NameData("Aaron", Gender.BOTH, true);
    actual = list.get(0);
    Assert.assertEquals(expected, actual);
    System.out.println("test fifth NameData object is correct...");
    expected = new NameData("Abdul", Gender.MALE, true);
    actual = list.get(4);
    Assert.assertEquals(expected, actual);
    System.out.println("test last NameData object is correct...");
    expected = new NameData("Zulma", Gender.FEMALE, false);
    actual = list.get(list.size() - 1);
    Assert.assertEquals(expected, actual);
}

}
public List<NameData> readNameDataFile() {
    ClassLoader classLoader = getClass().getClassLoader();
    System.out.println("User directory: " + System.getProperty("user.dir"));
    System.out.println("Current directory: " + new File("."));
    System.out.println("File path + name: " + path + "/" + fileName);
    System.out.println("ClassLoader : " + classLoader.getResource(path + "/" + fileName));
    final List<NameData> names = new ArrayList<>();
    String line;
    InputStream inputStream = classLoader.getResourceAsStream(path + "/" + fileName);
    BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
    try {
        if (inputStream != null) {
            while ((line = bufferedReader.readLine()) != null) {
                String[] items = line.split(" ");
                names.add(processItems(items));
            }
        }
    } catch (IOException ex) {
        Logger.getLogger(FileReader.class.getName()).log(Level.SEVERE, null, ex);
    } finally {
        try {
            inputStream.close();
        } catch (Throwable ignore) {
            // ignore
        }
    }
    return names;
}