1. 程式人生 > >Java反射異常:java.lang.IllegalArgumentException: wrong number of arguments

Java反射異常:java.lang.IllegalArgumentException: wrong number of arguments

在用反射呼叫Hello.java的main方法時報了一個異常
java.lang.IllegalArgumentException: wrong number of arguments

Hello.java

package classloader;
public class Hello{
    public static void main(String args[]){
        for(String arg:args){
            System.out.println("執行Hello的引數:"+arg);
        }
    }
}

上網搜尋一番後瞭解了原因
取main方法時用的是:

Method main=getMethod("main",String[].class);

呼叫時用的是:

main.invoke(null,argsArray);

這時取出的main方法的引數是一個Object物件
在用invoke方法呼叫main時傳的引數argsArray是一個字串陣列物件
引數個數不匹配,因此會報異常wrong number of arguements
正確的呼叫方法是先將String陣列強制轉換成Object,然後傳引數

main.invoke(null,(Object)argsArray);

這時引數個數就匹配了

相關推薦

Java反射異常:java.lang.IllegalArgumentException: wrong number of arguments

在用反射呼叫Hello.java的main方法時報了一個異常 java.lang.IllegalArgumentException: wrong number of arguments Hello.java package classloader; p

反射報錯java.lang.IllegalArgumentException: wrong number of arguments

tco private int 分享 技術分享 arguments oid image vat class Person{ private String name ; private String sex ; public Person(){

Shiro異常java.lang.IllegalArgumentException: Odd number of characters的解決方案

java.lang.IllegalArgumentException: Odd number of characters. at org.apache.shiro.codec.Hex.decode(Hex.java:128) ~[shiro-core-1.3.2.jar:1.3.

django執行錯誤:wrong number of arguments for 'set' command

這個錯誤是由於django呼叫redis的lib引起的。檢視一下redis的版本,應該是低於2.6的,我的redis就是2.2的。 2.6以前的版本不支援set命令。 那你只能升級redis了。 In

hive在執行查詢sql時出現java.lang.IllegalArgumentException: Wrong FS: hdfs://node1:9000/user/hive/warehouse/.

hive在執行查詢sql時出現java.lang.IllegalArgumentException: Wrong FS: hdfs://node1:9000/user/hive/warehouse/test1.db/t1, expected: hdfs://cl

eclipse下執行hadoop程式問題:java.lang.IllegalArgumentException: Wrong FS: hdfs:/

   在eclipse下執行hadoop程式時遇到報錯:    程式是建立了一個檔案,   程式碼如下:    FileSystem fs = new FileSystem.get(conf); Path path = new Path("hdfs://test.txt"

java反射java.lang.reflect) ---普通單例模式唯一性問題

catch 調用 ant 餓漢 urn 方法 -- ace ati 1. 普通的飽漢式、餓漢式 package org.bighead.test2; public class TestPrivate { private String str = "strPrivate

Scala中呼叫java反射異常記錄

1.Exception in thread "main" java.lang.InstantiationError: com.feng.Column     at com.feng.SparkSteamingTwo$$anonfun$getInsertSql$2.app

完美解決java.lang.IllegalArgumentException: pointerIndex out of range

感謝大神分享的精彩內容,完美解決我的問題,再次備份筆記。 1.在做多點觸控放大縮小,操作自己所繪製的圖形時發生這個異常。錯誤展示: E/AndroidRuntime: FATAL EXCEPTION: main

圖片縮放時java.lang.IllegalArgumentException: pointerIndex out of range解決方案

package com.example.webproject; import android.app.Activity; import android.graphics.Matrix; import android.graphics.PointF; import andro

java.lang.IllegalArgumentException: pointerIndex out of range pointerIndex=-1 pointerCount=1

在進行圖片放大縮小的時候,圖片縮小出現這個異常,查詢了一下發現解決方案 java.lang.IllegalArgumentException: pointerIndex out of range pointerIndex=-1 pointerCount=1 at android

轉: Java反射異常處理之InvocationTargetException

轉自:http://blog.csdn.net/zhangzeyuaaa/article/details/39611467 InvocationTargetException異常由Method.invoke(ob

Java反射異常處理之InvocationTargetException

InvocationTargetException異常由Method.invoke(obj, args...)方法丟擲。當被呼叫的方法的內部丟擲了異常而沒有被捕獲時,將由此異常接收。 示例:packa

Java反射java.lang.reflect.Method

前一篇文章講了Class中的成員變數(java.lang.reflect.Field)的常用使用方式以及其注意事項。我們接著講Class中的方法(java.lang.reflect.Method)。 介紹 方法就是一段可執行的程式碼,可以是被繼承而來的,

Java反射之——Java獲取類中成員變數和建構函式的資訊

我們無論是獲取成員變數資訊,亦或者是獲取建構函式的資訊,都必須獲取類的類型別,然後通過類的類型別進行對成員變數和建構函式的操作。 注:成員變數和建構函式也都是物件,前者是Feild的物件,在java.lang.reflec.Feild中封裝了對成員變數的資訊。後者是Constructor的物件,

Java反射之——Java獲取類的成員函式的資訊

本文主要講述如何獲取類的資訊,包括類的成員變數和成員函式,首先我們先了解一下,基本的資料型別和void關鍵字有沒有各自的類型別,答案是有的! 一、如何獲取基本的資料型別和void關鍵字的類型別: 程式碼奉上: public static void main(String[] args)

Java反射之——Java動態載入類

1、靜態載入和動態載入的區分: 我們在理解動態載入的同時,需要區分Java的編譯和執行: 編譯時載入屬於靜態載入,我們平時開發中使用最多的就是靜態載入,new物件都屬於靜態載入類,在編譯時載入所有可能使用到的類(雖然有可能用不到)。A a = new A(); 執行時載入屬於動態載入,我

Java反射之——Java中Class類的使用

Java語言中,萬事萬物皆物件,但是靜態成員、基本的資料型別(基本的資料型別也有自己的包裝類)等並不是物件,因為靜態的變數和函式屬於類,我們可以通過 類.靜態變數 / 類.靜態函式等方式呼叫。 public class Test {     private st

Java異常 java.io.IOException: Stream closed 的解決辦法

在程式執行過程中,如果我們遇見了以下異常:java.io.IOException: Stream closed. 即stream已經被關閉,我們分析一下就很容易知道原因了,即stream已經被關閉。那麼最有可能的情況就是你多次關閉了Stream。 例如: try { InputStream is

java異常java.net.MalformedURLException解決辦法

1、問題日誌列印 System.err W java.net.MalformedURLException W at