2017-07-04 4 views
1

Ich habe den folgenden Code in Java, die java.lang.NullPointerException an der Zeile wirft, wo ich neue Instanz erstellen.Erstellen von Objekt wirft NullPointerException

import java.util.Properties; 

import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.firefox.FirefoxDriver; 

public class Test { 

    public static void main(final String... args) { 

     Properties seleniumProperties = new Properties(); 
     seleniumProperties.setProperty("webdriver.gecko.driver", "<PATH_TO_DRIVER>"); 
     System.setProperties(seleniumProperties); 

     WebDriver driver = new FirefoxDriver(); 

    } 

} 

Zeilennr. 14 ist WebDriver driver = new FirefoxDriver(); und hier ist der Stack-Trace Ausnahme:

Exception in thread "main" java.lang.NullPointerException 
    at java.lang.String.startsWith(String.java:1405) 
    at java.lang.String.startsWith(String.java:1434) 
    at java.util.jar.JarFile.isKnownNotToHaveSpecialAttributes(JarFile.java:594) 
    at java.util.jar.JarFile.checkForSpecialAttributes(JarFile.java:552) 
    at java.util.jar.JarFile.hasClassPathAttribute(JarFile.java:518) 
    at java.util.jar.JavaUtilJarAccessImpl.jarFileHasClassPathAttribute(JavaUtilJarAccessImpl.java:37) 
    at sun.misc.URLClassPath$JarLoader.getClassPath(URLClassPath.java:1186) 
    at sun.misc.URLClassPath.getLoader(URLClassPath.java:522) 
    at sun.misc.URLClassPath.getNextLoader(URLClassPath.java:484) 
    at sun.misc.URLClassPath.getResource(URLClassPath.java:238) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:365) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:362) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:361) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
    at Test.main(Test.java:14) 

Antwort

1

Ich denke, ich habe das Problem gefunden. Die Verwendung von System.setProperties entfernt wahrscheinlich alle entscheidenden Eigenschaften, die von JVM verwendet werden. Ich habe den Code mit System.setProperty wie unten gezeigt ersetzt und jetzt funktioniert es gut.

import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.firefox.FirefoxDriver; 

public class Test { 

    public static void main(final String... args) { 

     /* 
     Properties seleniumProperties = new Properties(); 
     seleniumProperties.setProperty("webdriver.gecko.driver", "<PATH_TO_DRIVER>"); 
     System.setProperties(seleniumProperties); 
     */ 
     System.setProperty("webdriver.gecko.driver", "<PATH_TO_DRIVER>"); 
     WebDriver driver = new FirefoxDriver(); 

    } 

} 
Verwandte Themen