我正在尝试使用代码加载图片:
public void sendGroupPush(Context context, ArrayList tokenlist, String message) {
String msg = message;
String title = context.getString(R.string.app_name);
JSONArray regId = null;
JSONObject objData = null;
JSONObject data = null;
JSONObject notif = null;
try {
regId = new JSONArray();
for (int i = 0; i < tokenlist.size(); i++) {
regId.put(tokenlist.get(i));
}
data = new JSONObject();
data.put("message", message);
notif = new JSONObject();
notif.put("title", title);
notif.put("text", msg);
objData = new JSONObject();
objData.put("registration_ids", regId);
objData.put("data", data);
objData.put("notification", notif);
Log.e("!_@rj@_group_PASS:>", objData.toString());
} catch (JSONException e) {
e.printStackTrace();
}
JsonObjectRequest jsObjRequest = new JsonObjectRequest(Request.Method.POST, Constants.FCM_PUSH_GROUP_URL, objData,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.e("!_@rj@_@@_SUCESS", response + "");
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e("!_@rj@_@@_Errors--", error + "");
}
}) {
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
Map<String, String> params = new HashMap<String, String>();
params.put("Authorization", "key=" + Constants.FCM_API_KEY);
params.put("Content-Type", "application/json");
Log.e("!_@rj@_@@PUSH_headrers", "::> " + params);
return params;
}
};
RequestQueue requestQueue = Volley.newRequestQueue(context);
int socketTimeout = 1000 * 60;// 60 seconds
RetryPolicy policy = new DefaultRetryPolicy(socketTimeout, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT);
jsObjRequest.setRetryPolicy(policy);
requestQueue.add(jsObjRequest);
}
我收到例外:
Image image = new Image(AddOrderController.class.getResourceAsStream("/resources/icons/ok_icon.png"));
我项目的树很简单:
当我将java.lang.NullPointerException: Input stream must not be null
添加到包控制器时,一切正常并且图标有效,但在ok_icon.png
中无法加载图标。任何人都可以帮我修改代码吗?
答案 0 :(得分:1)
由于您有src/test/resources
作为源文件夹,resources
的内容将作为应用程序的一部分部署到类路径的根目录。这意味着icons
位于类路径的根目录中。
您可以使用系统文件浏览器(Mac上的Finder或Windows资源管理器或其他任何名称)检查输出文件夹的内容(我猜是target/classes
)来验证这一点。这些日子)。您可以通过选择&#34; Project&#34;来验证Eclipse中的输出文件夹。从菜单中选择&#34;属性&#34;,选择&#34; Java Build Path&#34;,选择&#34; Source&#34;选项卡,并查看指定的&#34;默认输出文件夹&#34;。
如果您提供给getResourceAsStream
的路径以前导/
开头,则路径将相对于类路径进行解释。所以
Image image = new Image(AddOrderController.class.getResourceAsStream("/icons/ok_icon.png"));
应该有用。
答案 1 :(得分:-2)
看起来你必须首先进入一个目录:
Image image = new Image(AddOrderController.class.getResourceAsStream("../resources/icons/ok_icon.png"));
如果它既不起作用,请检查两个源文件夹(src)是否真的相同,或者它们是否有不同的父文件夹