无法加载图片 - Javafx

时间:2017-02-25 12:01:00

标签: image javafx load

我正在尝试使用代码加载图片:

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"));

我项目的树很简单:

tree of project

当我将java.lang.NullPointerException: Input stream must not be null 添加到包控制器时,一切正常并且图标有效,但在ok_icon.png中无法加载图标。任何人都可以帮我修改代码吗?

2 个答案:

答案 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)是否真的相同,或者它们是否有不同的父文件夹