java 14 nullpointerexception কোনও বিস্তারিত বার্তা নেই


10

জাভা 14 এর অনেকগুলি নতুন বৈশিষ্ট্য রয়েছে। এর মধ্যে একটি নুলপয়েন্টারএক্সসেপশনটিতে বিস্তারিত বার্তা দেখাচ্ছে। আমি জাভা 14 ইনস্টল করেছি এবং ক্লাসের নিচে সংকলন চালানোর চেষ্টা করছি তবে আমি কোনও বিস্তারিত বার্তা পাচ্ছি না। আমি কি কিছু মিস করছি? সাহায্য করুন.

~/code/demo/temp$ java -version
openjdk version "14" 2020-03-17
OpenJDK Runtime Environment AdoptOpenJDK (build 14+36)
Eclipse OpenJ9 VM AdoptOpenJDK (build openj9-0.19.0, JRE 14 Mac OS X amd64-64-Bit Compressed          References 20200313_47 (JIT enabled, AOT enabled)
OpenJ9   - 0133ba037
OMR      - 1c04e0ef9
JCL      - a73be60649 based on jdk-14+36)

~/code/demo/temp$ cat Hello.java
public class Hello {
  public static void main(String args[]) {
    String a = null;
    System.out.println(a.length());
  }
}

~/code/demo/temp$ javac Hello.java
~/code/demo/temp$ java -XX:+ShowCodeDetailsInExceptionMessages Hello
Exception in thread "main" java.lang.NullPointerException
at Hello.main(Hello.java:4)

আমি প্রস্তাবিত -XX: + শোকোডডেটেলসইন এক্সেপশনমেসেজগুলি জাভাতে পতাকা পাঠাচ্ছি তবে এখানে কোনও বিস্তারিত বার্তা নেই। সাহায্য করুন.


আপনি কি নিশ্চিত করেছেন যে আপনার javac14 সংস্করণ রয়েছে?
রিয়েলস্কেপটিক

2
আপনি ওপেনজে 9 ব্যবহার করছেন। পাওয়া এই বাগ
জোহানেস কুন

উত্তর:


8

ওপেনজে 9 বর্তমানে জেপি 358 সমর্থন করে না :

NullPointerExceptionএখনও প্রয়োগ না হওয়ার জন্য বর্ধিত বার্তাগুলি

জেপি 358:NullPointerException জাভা 14 ভিএম দ্বারা তৈরি করা হয় এবং আপনি বৈশিষ্ট্যটি সক্ষম করে থাকলে সহায়ক নলপয়েন্টারএক্সেপশনগুলি বর্ধিত বার্তাগুলি সরবরাহ করে । তবে, সচেতন থাকুন যে এটি এই মুহুর্তে ওপেনজে 9 এ প্রয়োগ করা হয়নি।

অগ্রগতিটি এই বাগটিতে সন্ধান করা হয়েছে

আপনি যদি এই বৈশিষ্ট্যটি ব্যবহার করতে চান তবে হটস্পট ভেরিয়েন্টটি অ্যাডাপটপেনজেডকে থেকে ডাউনলোড করুন। এটি আপনার বর্তমান বিতরণের মতো একই বিক্রেতা, সুতরাং এটি কেবলমাত্র একটি ছোট পরিবর্তন।


এটি নির্দেশ করার জন্য ধন্যবাদ। ওপেনজেডিকে প্রকাশের নোটগুলিতে তাদের এই বিষয়টি উল্লেখ করা উচিত ছিল। openjdk.java.net/projects/jdk/14
প্রদীপ

2
@ প্রদীপ ওপেনজে ৯ অরাকল দ্বারা নয়, ইক্লিপস দ্বারা বিকাশিত।
স্লা

1
@ প্রদীপ ওপেনজে 9 ওপেনজেডিকে হিসাবে একই প্রকল্প নয়।
রোটিভেল

-1

আমি এটি এখানে স্পষ্ট করার জন্য রাখছি, যেহেতু ওপি প্রত্যাশিত আউটপুটটি কী তা বলে নি।

নীচের উদাহরণটি কাজ করে কারণ এটি হটস্পট জেভিএম ব্যবহার করছে।

public class Exceptional{
    public static void main(String[] args){
        String a = null;
        try{
            System.out.println(a.length());
        } catch (Exception e){
            System.out.println(e.getMessage());
        }
    }
}

এটি কেবল একই বার্তাটি প্রদর্শন না করে একই প্রোগ্রাম।

~/local/jdk-14+36/bin/java Exceptional.java 

খালি

যখন অতিরিক্ত যুক্তি দিয়ে চালান।

 ~/local/jdk-14+36/bin/java -XX:+ShowCodeDetailsInExceptionMessages Exceptional.java

"স্ট্রিং.লেন্থ ()" "" নਾਲ হওয়ায় আবেদন করতে পারবেন না

যুক্তি হটস্পট জেভিএমের স্ট্যাকট্রেসকেও প্রভাবিত করে।

অতিরিক্ত যুক্তি ব্যতীত যখন চালানো:

থ্রেডে "মেইন" java.lang. নালপয়েন্টারএক্সেপশন ব্যতিক্রম

এবং যুক্তি দিয়ে চালান:

থ্রেড "মূল" java.lang. নালপয়েন্টারএক্সেপশন ব্যতিক্রম: "স্ট্রিং.লেন্থ ()" আরম্ভ করা যাবে না "কারণ" "এক্সেপশনাল.মেইনে নਾਲ (এক্সেপশনাল.জভা:))

আমি ভুল করে ভেবেছিলাম স্ট্যাকের ট্রেসটি পরিবর্তন নাও হতে পারে কারণ এতে ইতিমধ্যে কোড সম্পর্কিত অতিরিক্ত তথ্য অন্তর্ভুক্ত রয়েছে। অন্য উত্তরটি যেমন উল্লেখ করেছে, এটি একটি বাগ যা ওপেনজে 9 জেভিএম-এ সম্বোধন করা হচ্ছে।


1
এটি কেন উত্তর দেয় না কেন কোনও সহায়ক নালপয়েন্টেরেক্সেপশন পায় না। কেবলমাত্র "আরে, আপনি আপনার কোডটিতে বার্তাটি e.getMessage()" দিয়ে পেতে পারেন ।
জোহানেস কুহান

@ জোহানেসকুহান এটি না? তারা ব্যতিক্রম বুদ্বুদটিকে একটি স্ট্যাক ট্রেস পর্যন্ত দিচ্ছে যেখানে যুক্তি হিসাবে ব্যতিক্রম বার্তাটি সংশোধন করছে। সুতরাং আমি দেখিয়ে দিচ্ছি যে বার্তাটি পরিবর্তিত হচ্ছে।
ম্যাট

1
সমস্যাটি অন্য কোথাও রয়েছে। এমনকি যদি অপশন আপনার কোডটি চালায় তবে ফলাফলটি পরিবর্তন করে না (সর্বদা nullবার্তা হিসাবে)
জোহানেস কুহান

1
e.getMessage()আপনি যদি ব্যতিক্রম না ধরেন তবে মেসেজটি স্ট্যাকের ট্রেসে একই রকম হওয়া উচিত - যদি আপনি এটি পরীক্ষা না করে থাকেন এবং বার্তাটিকে এটি ধরার মধ্যে কোনও পার্থক্য পর্যবেক্ষণ করেন না তবে এটি ধরা পড়ে না, তবে আমি মনে করি না এটি ধরা প্রশ্নটিতে প্রশ্নটির সমাধান করে।
কেয়া

@ কেয়া 3 সত্য, স্ট্যাক ট্রেস সংস্করণের আচরণও অন্তর্ভুক্ত করার জন্য আমি এটি আপডেট করেছি।
ম্যাট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.