这篇文章主要围绕加载程序实例化在JavaFX中引发nullpointer和java类加载过程面试展开,旨在为您提供一份详细的参考资料。我们将全面介绍加载程序实例化在JavaFX中引发nullpoint
这篇文章主要围绕加载程序实例化在JavaFX中引发nullpointer和java类加载过程面试展开,旨在为您提供一份详细的参考资料。我们将全面介绍加载程序实例化在JavaFX中引发nullpointer的优缺点,解答java类加载过程面试的相关问题,同时也会为您带来Android java.lang.RuntimeException:无法实例化活动ComponentInfo … java.lang.NullPointerException、android-Listview.setadapter引发nullpointer异常、android-Maps API在animateTo()方法上引发NullPointerException、Apache CXF客户端在Eclipse中加载良好,但独立的jar在WSDLServiceFactory中引发NullpointerException的实用方法。
本文目录一览:- 加载程序实例化在JavaFX中引发nullpointer(java类加载过程面试)
- Android java.lang.RuntimeException:无法实例化活动ComponentInfo … java.lang.NullPointerException
- android-Listview.setadapter引发nullpointer异常
- android-Maps API在animateTo()方法上引发NullPointerException
- Apache CXF客户端在Eclipse中加载良好,但独立的jar在WSDLServiceFactory中引发NullpointerException
加载程序实例化在JavaFX中引发nullpointer(java类加载过程面试)
我已经声明了两个FXML文件,并为每一个控制器: rootlayoutcontroller 是控制器的一个 rootlayout.fxml
和 overviewcontroller 是控制器的一个 overview.fxml
rootlayout具有带有文件打开项的菜单栏,而总览控制器具有Draw按钮。
我还有另一个叫做DataStructure的类。我想打开一个文件并将路径发送到Overviewcontroller。然后,当我单击Draw时,将实例化DartaStructure的构造函数,并将路径作为参数。但是,一旦我单击“打开”,在文件选择器打开对话框中,程序就会为inhandleOpen()
方法抛出一个空指针。有时我找不到源!
在主类中,我将概述包装在rootlayout中并显示该阶段。
RootLayoutController:
public class RootLayoutController {private final Model model;public RootLayoutController(Model model){this.model = model;}/** * Opens a FileChooser to let the user select a .z3lgm file to load. */@FXMLprivate void handleOpen() { FileChooser fileChooser = new FileChooser(); // Set extension filter FileChooser.ExtensionFilter extFilter = new FileChooser.ExtensionFilter( "3lgm2 files (*.z3lgm)", "*z3lgm"); fileChooser.getExtensionFilters().add(extFilter); // Show open file dialog File file = fileChooser.showOpenDialog(main.getPrimaryStage()); if (file != null) { path = file.toString(); model.setText(path);//error }}}
OverViewController:
public class OverViewController implements Initializable {private final Model model;public OverViewController(Model model){ this.model = model;}public void treeTableDraw(ActionEvent event) { String p = model.getText(); new Controller(p); drawTable(); numberOfFunctions = dc.getFuncAll().size(); numberOfOrganizations = dc.getSortedAssignedOrg().size(); funcLabel.setText(numberOfFunctions + ""); orgLabel.setText(numberOfOrganizations + ""); btnDraw.setDisable(true);}}
错误堆栈:
Exception in thread "JavaFX Application Thread" java.lang.RuntimeException: java.lang.reflect.InvocationTargetExceptionat javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1770)at javafx.fxml.FXMLLoader$ControllerMethodEventHandler.handle(FXMLLoader.java:1653)at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:49)at javafx.event.Event.fireEvent(Event.java:198)at javafx.scene.control.MenuItem.fire(MenuItem.java:462)at com.sun.javafx.scene.control.skin.ContextMenuContent$MenuItemContainer.doSelect(ContextMenuContent.java:1405)at com.sun.javafx.scene.control.skin.ContextMenuContent$MenuItemContainer.lambda$createChildren$341(ContextMenuContent.java:1358)at com.sun.javafx.scene.control.skin.ContextMenuContent$MenuItemContainer$$Lambda$326/15872584.handle(Unknown Source)at com.sun.javafx.event.CompositeEventHandler$NormalEventHandlerRecord.handleBubblingEvent(CompositeEventHandler.java:218)at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:80)at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54)at javafx.event.Event.fireEvent(Event.java:198)at javafx.scene.Scene$MouseHandler.process(Scene.java:3758)at javafx.scene.Scene$MouseHandler.access$1500(Scene.java:3486)at javafx.scene.Scene.impl_processMouseEvent(Scene.java:1762)at javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2495)at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:350)at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:275)at java.security.AccessController.doPrivileged(Native Method)at com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleMouseEvent$350(GlassViewEventHandler.java:385)at com.sun.javafx.tk.quantum.GlassViewEventHandler$$Lambda$209/5704663.get(Unknown Source)at com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:404)at com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:384)at com.sun.glass.ui.View.handleMouseEvent(View.java:555)at com.sun.glass.ui.View.notifyMouse(View.java:927)at com.sun.glass.ui.gtk.GtkApplication._runLoop(Native Method)at com.sun.glass.ui.gtk.GtkApplication.lambda$null$48(GtkApplication.java:139)at com.sun.glass.ui.gtk.GtkApplication$$Lambda$41/19140780.run(Unknown Source)at java.lang.Thread.run(Thread.java:745) Caused by: java.lang.reflect.InvocationTargetExceptionat 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:497)at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:71)at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:497)at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:275)at javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1767)... 46 moreCaused by: java.lang.NullPointerExceptionat view.RootLayoutController.handleOpen(RootLayoutController.java:174)... 56 more
主类:
public class Main extends Application {private Stage primaryStage;private BorderPane rootLayout;private Model model = new Model;// private ObservableList<DataConstructor> treeTableData =// FXCollections.observableArrayList();@Overridepublic void start(Stage primaryStage) { this.primaryStage = primaryStage; this.primaryStage.setTitle("IT-Saturation"); initRootLayout(); showOverView();}private void showOverView() { try { FXMLLoader loader = new FXMLLoader(); loader.setLocation(Main.class.getResource("/view/OverView.fxml")); loader.setController(new OverViewController(model)); // Parent firstUI = loader.load(); AnchorPane overView = (AnchorPane) loader.load(); rootLayout.setCenter(overView); // OverViewController controller = loader.getController(); // controller.setMainApp(this); } catch (IOException e) { e.printStackTrace(); }}private void initRootLayout() { try { FXMLLoader loader = new FXMLLoader(); loader.setLocation(Main.class.getResource("/view/RootLayout.fxml")); loader.setController(new RootLayoutController(model)); rootLayout = (BorderPane) loader.load(); // show scene containing the root layout Scene scene = new Scene(rootLayout); scene.getStylesheets().add( getClass().getResource("application.css").toExternalForm()); primaryStage.setScene(scene); // gives controller access to main RootLayoutController controller = loader.getController(); controller.setMainApp(this); primaryStage.show(); } catch (IOException e) { e.printStackTrace(); }}/** * Returns the main stage. * * @return primaryStage */public Stage getPrimaryStage() { return primaryStage;}public static void main(String[] args) { launch(args);}public void showMostComputerizedStatistics() { try { // Load the fxml file and create a new stage for the popup. FXMLLoader loader = new FXMLLoader(); loader.setLocation(Main.class .getResource("view/BirthdayStatistics.fxml")); AnchorPane page = (AnchorPane) loader.load(); Stage dialogStage = new Stage(); dialogStage.setTitle("Birthday Statistics"); dialogStage.initModality(Modality.WINDOW_MODAL); dialogStage.initOwner(primaryStage); Scene scene = new Scene(page); dialogStage.setScene(scene); // Set the persons into the controller. MostComputerizedController controller = loader.getController(); dialogStage.show(); } catch (IOException e) { e.printStackTrace(); }}}
这是RootLayout fxml:
<?xml version="1.0" encoding="UTF-8"?><?import javafx.scene.input.*?><?import javafx.scene.control.*?><?import java.lang.*?><?import javafx.scene.layout.*?><?import javafx.scene.layout.BorderPane?><BorderPane prefHeight="500.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" > <top> <MenuBar BorderPane.alignment="CENTER"> <menus> <Menu text="_File"> <items> <MenuItem onAction="#handleOpen" text="_Open" /> <MenuItem mnemonicParsing="false" onAction="#handleExportPic" text="Export as picture" /> <MenuItem mnemonicParsing="false" text=" Save as" /> <MenuItem mnemonicParsing="false" onAction="#doPrint" text="Print" /> <MenuItem onAction="#handleExit" text="E_xit"> <accelerator> <KeyCodeCombination alt="UP" code="X" control="DOWN" meta="UP" shift="UP" shortcut="UP" /> </accelerator></MenuItem> </items> </Menu> <Menu mnemonicParsing="false" onAction="#handleMostComputerizedStatistics" text="Statistics"> <items> <MenuItem mnemonicParsing="false" onAction="#handleMostComputerizedStatistics" text="Show Statistics" /> </items> </Menu> <Menu mnemonicParsing="false" text="Help"> <items> <MenuItem mnemonicParsing="false" text="About" /> </items> </Menu> </menus> </MenuBar> </top></BorderPane>
这是概述fxml:
<?xml version="1.0" encoding="UTF-8"?><?import javafx.scene.text.*?><?import javafx.scene.control.*?><?import java.lang.*?><?import javafx.scene.layout.*?><?import javafx.scene.layout.AnchorPane?><AnchorPane prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" > <children> <SplitPane dividerPositions="0.2391304347826087" layoutX="62.0" layoutY="52.0" prefHeight="400.0" prefWidth="600.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0"> <items> <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="160.0" prefWidth="100.0" SplitPane.resizableWithParent="false"> <children> <Button fx:id="btnDraw" layoutX="24.0" layoutY="297.0" mnemonicParsing="false" onAction="#treeTableDraw" text="Draw" AnchorPane.leftAnchor="22.0" AnchorPane.rightAnchor="36.0" /> <Label fx:id="funcLabel" layoutX="24.0" layoutY="155.0" opacity="0.72" prefHeight="15.0" prefWidth="38.0" text="0" AnchorPane.bottomAnchor="190.0" AnchorPane.leftAnchor="24.0" AnchorPane.rightAnchor="77.0"> <font> <Font size="10.0" /> </font></Label> <Label fx:id="orgLabel" layoutX="17.0" layoutY="219.0" opacity="0.72" prefHeight="14.0" prefWidth="38.0" text="0" AnchorPane.bottomAnchor="165.0" AnchorPane.leftAnchor="24.0" AnchorPane.rightAnchor="84.0" AnchorPane.topAnchor="219.0"> <font> <Font size="10.0" /> </font></Label> <Label layoutX="63.0" layoutY="155.0" text="Functions" AnchorPane.bottomAnchor="190.0"> <font> <Font size="11.0" /> </font> </Label> <Label layoutX="56.0" layoutY="219.0" text="Organizations" AnchorPane.bottomAnchor="165.0" AnchorPane.topAnchor="213.0"> <font> <Font size="10.0" /> </font> </Label> <Button fx:id="btnReset" layoutX="21.0" layoutY="345.0" mnemonicParsing="false" onAction="#treeTableReset" onKeyPressed="#treeTableReset" prefHeight="25.0" prefWidth="81.0" text="Reset" AnchorPane.leftAnchor="22.0" AnchorPane.rightAnchor="36.0" /> </children></AnchorPane> <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="160.0" prefWidth="100.0" SplitPane.resizableWithParent="false"> <children> <ScrollPane fx:id="scrollPane" prefHeight="398.0" prefWidth="480.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0"> <content> <TreeTableView fx:id="treeTable" editable="true" prefHeight="375.0" prefWidth="246.0" /> </content> </ScrollPane> </children></AnchorPane> </items> </SplitPane> </children></AnchorPane>
答案1
小编典典FXMLLoader.getController()``null
如果在调用该load()
方法之前调用它,它将返回(因为如果尚未加载FXML文件,则它不知道控制器是什么)。
但这仍然不会做您想要的。您需要引用 与UI中显示
的FMXL文件的根相关联的控制器实例。无论是通过从另一个FXMLLoader
实例获取实例还是直接实例化实例实例,都无法获得任意控制器实例。
所需的控制器实例是可以通过调用类loader.getController()
中的showOverview()
方法获得的Main
。如果您希望控制器之间相互通信,则需要安排RootLayoutController
实例具有对该实例的引用OverViewController
。
最好不要让控制器直接相互访问,而要让它们与共享数据模型中的数据通信。
Android java.lang.RuntimeException:无法实例化活动ComponentInfo … java.lang.NullPointerException
出于某种原因,每次尝试启动我的应用程序时,我都会出现以下错误:
Unable to instantiate activity ComponentInfo{com.example.lifeahead/com.example.lifeahead.MainActivity}:java.lang.NullPointerException
我检查了清单文件,并添加了所有活动.
我启动应用程序时使用的唯一方法是:
private void logIn(){
Button logIn = (Button) findViewById(R.id.login);
logIn.setonClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Todo Auto-generated method stub
Intent loginIntent = new Intent(MainActivity.this, HomeActivity.class);
loginIntent.putExtra("cmUN", cmUN);
loginIntent.putExtra("cmPW", cmPW);
startActivity(loginIntent);
}
});
}
这是onCreate:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.add(R.id.container, new PlaceholderFragment()).commit();
}
logIn();
}
完整日志:
Ë
/AndroidRuntime(1607): FATAL EXCEPTION: main
E/AndroidRuntime(1607): Process: com.example.lifeahead, PID: 1607
E/AndroidRuntime(1607): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.lifeahead/com.example.lifeahead.MainActivity}: java.lang.NullPointerException
E/AndroidRuntime(1607): at android.app.ActivityThread.performlaunchActivity(ActivityThread.java:2121)
E/AndroidRuntime(1607): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
E/AndroidRuntime(1607): at android.app.ActivityThread.access$800(ActivityThread.java:135)
E/AndroidRuntime(1607): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
E/AndroidRuntime(1607): at android.os.Handler.dispatchMessage(Handler.java:102)
E/AndroidRuntime(1607): at android.os.Looper.loop(Looper.java:136)
E/AndroidRuntime(1607): at android.app.ActivityThread.main(ActivityThread.java:5017)
E/AndroidRuntime(1607): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(1607): at java.lang.reflect.Method.invoke(Method.java:515)
E/AndroidRuntime(1607): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
E/AndroidRuntime(1607): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
E/AndroidRuntime(1607): at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime(1607): Caused by: java.lang.NullPointerException
E/AndroidRuntime(1607): at android.app.Activity.findViewById(Activity.java:1884)
E/AndroidRuntime(1607): at com.example.lifeahead.MainActivity.<init>(MainActivity.java:22)
E/AndroidRuntime(1607): at java.lang.class.newInstanceImpl(Native Method)
E/AndroidRuntime(1607): at java.lang.class.newInstance(Class.java:1208)
E/AndroidRuntime(1607): at android.app.Instrumentation.newActivity(Instrumentation.java:1061)
E/AndroidRuntime(1607): at android.app.ActivityThread.performlaunchActivity(ActivityThread.java:2112)
E/AndroidRuntime(1607): ... 11 more
我感谢所有帮助!
解决方法:
stacktrace告诉你
Button logIn = (Button) findViewById(R.id.login);
findViewById返回的对象为null,因为您拥有的唯一方法是logIn(). findViewById返回null的唯一原因是因为您正在查找不属于当前活动的视图层次结构的视图
android-Listview.setadapter引发nullpointer异常
代码如下
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent i = getIntent();
ArrayList<String> imageUrl = i.getStringArrayListExtra("ImageUrl");
String[] companyImageUrl = imageUrl.toArray(new String[0]);
ListView companyList = null;
LazyAdapter companyListViewAdapter;
companyList = (ListView)findViewById(R.id.companylist);
companyListViewAdapter = new LazyAdapter(companyListView.this , companyImageUrl);
try {
companyList.setAdapter(companyListViewAdapter);//exception here
} catch (Exception e) {
System.out.println(e);
}
setContentView(R.layout.company_list);
}
编辑:添加了Lazyadapter代码
public class LazyAdapter extends BaseAdapter {
private Activity activity;
private String[] data;
private static LayoutInflater inflater=null;
public ImageLoader imageLoader;
public LazyAdapter(Activity a, String[] d) {
activity = a;
data=d;
inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
imageLoader= new ImageLoader(activity.getApplicationContext());
}
public int getCount() {
return data.length;
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public static class ViewHolder{
public TextView text;
public ImageView image;
}
public View getView(int position, View convertView, ViewGroup parent) {
View vi=convertView;
ViewHolder holder;
UrlList urlList;
urlList = XMLParser.urlList;
if(convertView==null){
vi = inflater.inflate(R.layout.item, null);
holder=new ViewHolder();
holder.text=(TextView)vi.findViewById(R.id.text);;
holder.image=(ImageView)vi.findViewById(R.id.image);
vi.setTag(holder);
}
else
holder=(ViewHolder)vi.getTag();
String[] categoryNameStrings = urlList.getCategoryName().toArray(new String[0]);
holder.text.setText(categoryNameStrings[position]);
holder.image.setTag(data[position]);
imageLoader.displayImage(data[position], activity, holder.image);
return vi;
}
}
解决方法:
使用setContentView(R.layout.company_list); aftersuper.onCreate(savedInstanceState);
android-Maps API在animateTo()方法上引发NullPointerException
尝试将地图动画化为某个GeoPoint时出现致命异常-这是例外:
12-20 17:53:20.400: E/Crittercism(3523): java.lang.NullPointerException
12-20 17:53:20.400: E/Crittercism(3523): at com.amazon.geo.maps.MercatorProjection.latLongToWorldPixels(MercatorProjection.java:397)
12-20 17:53:20.400: E/Crittercism(3523): at com.amazon.geo.maps.MercatorProjection.toPixels(MercatorProjection.java:69)
12-20 17:53:20.400: E/Crittercism(3523): at com.amazon.geo.maps.MapView.animateto_AmazonInternal(MapView.java:1801)
12-20 17:53:20.400: E/Crittercism(3523): at com.amazon.geo.maps.MapController.animateto(MapController.java:46)
12-20 17:53:20.400: E/Crittercism(3523): at com.fatattitude.myapplication.MyMapActivity.moveMapToPoint(BusMapActivity.java:1564)
这是我的代码.我的日志输出还显示GeoPoint的值为LatitudeE6 = 51537141和LongitudeE6 = -246271
private void moveMapToPoint(GeoPoint gp, int zoomLevel) {
MapController mc = mapView.getController();
if (zoomLevel < 0)
zoomLevel = mapView.getZoomLevel();
mc.stopAnimation(true);
mc.setZoom(zoomLevel);
String strGeoPointInfo = String.format("Lat:%d, Lng:%d", gp.getLatitudeE6(), gp.getLongitudeE6() );
Log.i("GeoPoint-Info", "**moveMapToPoint: " + strTestOutput);
mc.animateto(gp);
}
如果我评论这行
//mc.stopAnimation(true);
我不再例外.
谁能帮助我了解为什么发生此异常?
请帮我.
解决方法:
该应用可能会等待GPS传感器寻找位置之前.
mMyLocationOverlay.runOnFirstFix(new Runnable() {
public void run() {
mapView.getController().animateto(myLocation);
}});
Apache CXF客户端在Eclipse中加载良好,但独立的jar在WSDLServiceFactory中引发NullpointerException
我的目标是使用mvn程序集创建一个在具有所有依赖项的独立jar中运行的Web Service客户端:
我使用CXF代码生成器wsdl2java生成了客户端,并创建了一个名为NetBanxAutostatementService的@WebServiceClient。
对于依赖我
<cxf.version>2.5.2</cxf.version>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxws</artifactId>
<version>${cxf.version}</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http</artifactId>
<version>${cxf.version}</version>
<scope>runtime</scope>
</dependency>
拼命地我什至试图添加更多的“东西”
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-core</artifactId>
<version>2.5.2</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf</artifactId>
<version>2.5.2</version>
<type>pom</type>
<scope>runtime</scope>
</dependency>
问题:每次我尝试运行“ java -jar target / Netbanx-0.0.1-SNAPSHOT-jar-with-
dependencies.jar”
INFO [main] (Netbanx.java:97) - autostatement_wsdlLocation:https://www.test.netbanx.com/cgi-bin/autostatement_wsdl
Exception in thread "main" java.lang.NullPointerException
at org.apache.cxf.wsdl11.WSDLServiceFactory.<init>(WSDLServiceFactory.java:92)
at org.apache.cxf.jaxws.ServiceImpl.initializePorts(ServiceImpl.java:204)
at org.apache.cxf.jaxws.ServiceImpl.<init>(ServiceImpl.java:148)
at org.apache.cxf.jaxws.spi.ProviderImpl.createServiceDelegate(ProviderImpl.java:91)
at javax.xml.ws.Service.<init>(Service.java:56)
at com.netbanx.autostatement.NetBanxAutostatementService.<init> (NetBanxAutostatementService.java:39)
at my.project.netbanx.Netbanx.<init>(Netbanx.java:98)
at my.project.netbanx.Netbanx.main(Netbanx.java:130)
这在调用WebServiceClient autostatementService = new
NetBanxAutostatementService(autostatement_wsdlLocation)的行中发生;我通过日志行知道我没有将autostatement_wsdlLocation传递为null
Java代码:
URL autostatement_wsdlLocation = null;
URL payment_wsdlLocation = null;
try {
autostatement_wsdlLocation = new URL(properties.getProperty("autostatement_wsdlLocation"));
payment_wsdlLocation = new URL(properties.getProperty("payment_wsdlLocation"));
} catch (MalformedURLException e) {
logger.error("MalformedURLException",e);
}
/**
* Load the Netbanx's webservices AutostatementService and PaymentService
*/
try {
logger.info("autostatement_wsdlLocation:"+autostatement_wsdlLocation.toString());
autostatementService = new NetBanxAutostatementService(autostatement_wsdlLocation); //it is here I get the NullPointerException error
logger.info("payment_wsdlLocation:"+payment_wsdlLocation.toString());
paymentService = new NetBanxPaymentService(payment_wsdlLocation);
webServiceStarted = true;
} catch(javax.xml.ws.WebServiceException wsException ){
String error = "Cannot create NetBanx web service please make sure this host can reach:" + autostatement_wsdlLocation +" and " + payment_wsdlLocation;
logger.error(error);
logger.error("WebServiceException",wsException);
}
我们今天的关于加载程序实例化在JavaFX中引发nullpointer和java类加载过程面试的分享已经告一段落,感谢您的关注,如果您想了解更多关于Android java.lang.RuntimeException:无法实例化活动ComponentInfo … java.lang.NullPointerException、android-Listview.setadapter引发nullpointer异常、android-Maps API在animateTo()方法上引发NullPointerException、Apache CXF客户端在Eclipse中加载良好,但独立的jar在WSDLServiceFactory中引发NullpointerException的相关信息,请在本站查询。
本文标签: