আমি কীভাবে একটি উচ্চ-ডিপিআই ডিসপ্লেতে উপস্থাপিত জাভা অ্যাপ্লিকেশনগুলি চালিত করব?


75

আমি উইন্ডোজ ১০-তে একটি হাই-ডিপিআই ডিসপ্লেতে একটি জাভা অ্যাপ্লিকেশন (জেআর ফাইল) চালানোর চেষ্টা করছি The অ্যাপটি সুইং ব্যবহার করে এবং তাই এটি ডিপিআই-সচেতন নয়। সাধারণত যখন আমি একটি অ্যাপ্লিকেশন চালিত করি যা ডিপিআই-সচেতন নয়, উইন্ডোজ আমার কাছে এটি ঝাপসা করে দেবে, তবুও অস্পষ্ট। তবে কিছু কারণে এটি জাভা অ্যাপ্লিকেশনটি স্কেল করছে না; আমি অসম্ভব-পাঠযোগ্য পাঠ্য সহ কোণে একটি ছোট্ট উইন্ডো পেয়েছি। উইন্ডোজের হাই-ডিপিআই (অস্পষ্ট) স্কেলিং সহ আমি কীভাবে একটি জাভা অ্যাপ চালাব?


এটি কি আপনার অ্যাপ্লিকেশন এবং আপনি উত্স / অবজেক্টগুলিকে নিয়ন্ত্রণ করেন, বা এটি এখন কোনও পরিবর্তনযোগ্য যে কোনও উত্তরাধিকার অ্যাপ্লিকেশন?
harrymc

3
এটি আমার আবেদন নয়; উত্স উপর কোন নিয়ন্ত্রণ।
জেফ ই

খারাপ খবর, অ্যাপ্লিকেশনটি চালানোর জন্য আপনার ডিপিআই কমতে হবে। হ্যাক সহ এমন কিছু সংস্থান রয়েছে যা সহায়তা করতে পারে: উইন্ডোজ 10 এ অস্পষ্ট ফন্টগুলি ঠিক করুন , উইন্ডোজ 10-এ ডিপিআই সেটিংস , উইন্ডোজ 10 ডিপিআই অস্পষ্টতা । তাদের ক্ষেত্রে চেষ্টা করার আগে কমপক্ষে একটি সিস্টেম রিস্টোর পয়েন্ট ব্যাকআপ তৈরি করুন। ফলব্যাক সমাধান উইন্ডোজ 7. ফিরে যাওয়ার হতে পারে
harrymc

5
@harrymc উপরের যে কোনটি কীভাবে সাহায্য করবে? সমস্যাটি অস্পষ্ট ফন্ট নয় বা এটি চালাতে অস্বীকার করেছে, সমস্যাটি হ'ল সবকিছুই ক্ষুদ্র । "অস্পষ্ট" ফন্টের রেন্ডারিং হ'ল আমি যা অর্জন করতে চাই এবং আমি যেমন ওপি-র প্রশ্নটি বুঝতে পেরেছিলাম তারাও তা করে। ডিপিআই স্কেলিংকে 100% এ সেট করা পুরো সিস্টেমকে ছোট করে দেবে; ডিসপ্লে রেজোলিউশনটিকে কোনও অ-নেটিভের সাথে সেট করা সমস্ত কিছুকে ঝাপসা দেখায়। (ঠিক আছে, আমার জন্য 1080p ডিসপ্লে ছাড়া আর কোনও
ঝাপসা নেই

1
@harrymc এবং যদিও এই অ্যাপ্লিকেশনটি ব্যবহারযোগ্য করে তুলতে পারে, আমি নিশ্চিত আপনি "2160p ডিসপ্লেতে এক্সকে কীভাবে কাজ করবেন?" "আরও খারাপ ডিসপ্লে ব্যবহার করুন" এর সাথে বিন্দুটি অনুপস্থিত।
মিলিমুজ

উত্তর:


37

এখানে সমস্যাটি মনে হচ্ছে যে সুইং ডিফল্টরূপে দাবি করছে যে এটি ডিপিআই সচেতন, সুতরাং উইন্ডোজ এটি স্কেল করে না। এই আচরণটি বন্ধ করতে এই সুইচটি ব্যবহার করুন এবং উইন্ডোজগুলি আপনার সুইং অ্যাপ্লিকেশনটিকে স্কেলিং শুরু করবে:

-Dsun.java2d.dpiaware=false

[সম্পাদনা: দুর্ভাগ্যক্রমে, এই পতাকাটি আর জাভা 8 তে কাজ করবে বলে মনে হচ্ছে না, আমি এটি জাভা 6 তে পরীক্ষা করছিলাম L মনে হচ্ছে এটি একটি পরিচিত সমস্যা ]

[সম্পাদনা 2: আপনি একটি জাভা 8 ইনস্টলটি সঠিকভাবে কাজ করতে, একটি প্রোগ্রাম ব্যবহার করে EXE ম্যানিফায়াস্টগুলি পরিবর্তন করতে পারেন। আমি java.exe এবং javaw.exe এর উদ্ভাসের মধ্যে সেটিংটি সত্য থেকে মিথ্যাতে পরিবর্তন করেছি এবং এখন আমার সুইং প্রোগ্রামগুলি উইন্ডোজ 10 হাই ডিপিআই-তে সঠিকভাবে স্কেল করেছে। আমি এটিতে রিসোর্স টিউনার ব্যবহার করেছি ]]

[সম্পাদনা 3] কেবল জাভা 9 ব্যবহার করুন


আপনি সম্পাদনা # 2 বিস্তারিতভাবে বলতে পারেন? আপনি কোন সেটিংটি ম্যানিফেস্টে ঠিকঠাক করেছেন?
তোমালাক

ম্যানিফেস্ট এক্সএমএলে এটি <dpiAware> পতাকাটি <asmv3: অ্যাপ্লিকেশন> <asmv3: উইন্ডোজসেটিংস>
কার্লজি

এটাই আসল কথা. আমি সেই পতাকাটি দেখেছি এবং আমি এটি সেট করেছি false, তবে অ্যাপ্লিকেশন (জেএনএলপি / ওয়েবস্টার্ট) কোনওভাবেই সঠিকভাবে স্কেল হয়নি। এটি কি কাজ করে কিনা তা ক্রস-চেক করার একটি সহজ উপায়ের কথা ভাবতে পারেন, উদাহরণস্বরূপ এমন একটি পরীক্ষা অ্যাপ যা আপনি জানেন যে এই সেটিংটিতে প্রতিক্রিয়া জানায়?
তোমালাক

ওয়েবস্টার্টটি বিশেষত চতুর কারণ এটি নির্ধারণযোগ্য যে ঠিক কোন এক্সিকিউটেবলের মধ্যে আপনি কোন জে ডিস্ট্রো ইনস্টল করেছেন তা ব্যবহার করে শেষ করতে পারেন। ক্রস-চেক হিসাবে, আমি সরাসরি আপনার অ্যাপ্লিকেশনটি java.exe বা javaw.exe দিয়ে চালু করার চেষ্টা করেছি এবং কোনও পার্থক্য আছে কিনা তা দেখতে JWS এড়িয়ে যেতে চেষ্টা করব।
কার্লজি

4
এটি হাস্যকর এবং প্রহসনের মধ্যে কোথাও। ফ্রেমওয়ার্কটি তার ক্ষমতাগুলি সম্পর্কে ভুল প্রতিবেদন করে এবং ত্রুটিটিকে স্থির করে এমন স্যুইচটি সরানো হয়েছে। একমাত্র কাজ? শেষ ব্যবহারকারীদের জন্য একটি তৃতীয় পক্ষের সরঞ্জাম কিনতে। এবং লোকেরা অবাক করে যে জাভা কেন এত কম খ্যাতি পেয়েছে।
বেসিক

68

আমার উইন্ডোজ 10 মেশিনে সবেমাত্র একটি সহজ সমাধান পাওয়া গেছে:

  1. এই java.exeআপনি ইনস্টল করা নেই।
  2. ডান ক্লিক করুন -> Properties
  3. Compatibilityট্যাবে যান
  4. চেক Override high DPI scaling behavior.
  5. Systemজন্য চয়ন করুনScaling performed by:

5
সেরা সমাধান - আমার একটি .jnlp ফাইল চালাতে এই সমস্যা হয়েছিল তাই আমাকে "সি: \ প্রোগ্রাম ফাইলস \ জাভা \ jre1.8.0_131 \ বিন \ জেপ 2 লঞ্চার.এক্সে" পরিবর্তন করতে হয়েছিল তবে এটি মনোনিবেশের মতো কাজ করেছিল worked
ভয়ঙ্কর হারারি

আমার জন্য এটি জেডিকে সংস্করণ ছিল। উইন্ডোজ 10
ব্রায়ান নোব্লাচ 31:38

3
উইন্ডোজ 10-এর জন্য, জাভা-ভিত্তিক মাইনক্রাফ্ট লঞ্চকারীগুলি চলমান, এটি কাজ করার জন্য আমাকে আমার সিস্টেমে ইনস্টল করা সমস্ত জাভা সংস্করণ পরিবর্তন করতে হয়েছিল (java.exe এবং javaw.exe)।
সাইবারবিট

5
আমি কম অনুপ্রবেশকারী বৈকল্পিক ব্যবহার করেছি। আমি কমান্ডের জন্য একটি শর্টকাট তৈরি করেছি java -jar myJarFile.jarএবং সেই শর্টকাটে 2 থেকে 5 পদক্ষেপগুলি করেছি (উইন্ডোজ 10, জাভা 8)।
জুলিয়েন ক্রোনেগ

1
আমার জন্য, এটি ছিলjavaw.exe
মাস্টারেক্সিলো

14

যদি আপনি এই প্রশ্নটি দেখে হোঁচট খেয়ে থাকেন তবে আসলে লিনাক্সে কাজ করে এমন কোনও সমাধান খুঁজছেন তবে এটি আপনার জন্য for

আপনি যদি javaবাইনারিটিতে অ্যাপ্লিকেশন আরম্ভ করে এমন প্যারামিটারগুলি যুক্ত করতে পারেন, আপনি জাভা 2 ডি এর জন্য একটি স্কেলিং ফ্যাক্টর নির্দিষ্ট করার জন্য প্রোপ্রেটির -Dজন্য কোনও মান পাস করার বিকল্পটি ব্যবহার করতে পারেন sun.java2d.uiScale। এটি আপনার অ্যাপ্লিকেশনটি স্কেল করবে। স্কেলিং ফ্যাক্টর মানটি দ্বিগুণ। নিশ্চিত হয়ে নিন যে আপনি এই বিকল্পটি javaবাইনারি নিজেই পাস করেছেন , চালু হওয়া জাভা অ্যাপ্লিকেশনটি নয়।

উদাহরণ: 2.5 এর ইউআই স্কেলিং ফ্যাক্টর সহ নিকটস্থতা.জার চালু করুন

java -Dsun.java2d.uiScale=2.5 -jar ~/jars/NearInfinity.jar

আমি এই নিবন্ধটি হাইডিডিআই সিস্টেমে লিনাক্স চালানোর জন্য সাধারণভাবে বেশ দরকারী বলে খুঁজে পেয়েছি এবং উইন্ডোজেও কিছু জিনিস কাজ করতে পারে: https://wiki.archlinux.org/index.php/HiDPI


এটি ভাল, যদিও আমি আশা করি আমি জেফ্রেমসের জন্য 1 স্কেলিং এবং JOptionPanes এর জন্য সিস্টেম স্কেলিংটি পেতে পারি।
নেটস

1
আমার জন্য কাজ করে না।
এত্তে জুভোনেন

@ অট্টজুভেনেন কেবল "আমার গাড়িটি কাজ করে না" বলার পরিবর্তে, যখন এটি আপনার পক্ষে কাজ করে না, আপনি কী চেষ্টা করেছেন, বর্ণিত প্রত্যাশিত ফলাফল কী ছিল, প্রকৃতটি কী তা বর্ণনা করে আপনি কেন একটি নতুন প্রশ্ন পোস্ট করবেন না? ফলস্বরূপ, আপনি কোন কমান্ড লাইন ব্যবহার করেছেন এবং কী, যদি কোনও, ত্রুটি বার্তা পেয়েছেন?
ক্রিশ্চিয়ান হুজার

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

দুঃখিত যদি আমি অভদ্র মনে হয়, কিছুই হতাশ না হয়ে হতাশ হয়ে পড়ে। এফডাব্লুআইডাব্লু আমি এটিতে একটি নতুন প্রশ্ন পোস্ট করেছি এবং সাইটটি আমাকে অনুমতি দেওয়ার সাথে সাথে আমি এটিতে একটি অনুগ্রহও পোস্ট করব।
এত্তে জুভোনেন

10

সমাধান: এটি জেআরই 9 এ চালান।

এটি কারণ জাভা রানটাইম নিজেকে "ডিপিআই-সচেতন" হিসাবে ঘোষণা করেছিল কিন্তু সত্যই এটিডাব্লুটি এবং সুইংয়ের পক্ষে সমর্থন করে নি। জাভা অ্যাপ্লিকেশনগুলি সঠিকভাবে মাপার পরিবর্তে পিক্সেলের ভিত্তিতে আকার এবং রেন্ডার করা হয়েছিল, এতে হাইডিপিআই প্রদর্শনগুলি অন্তর্ভুক্ত রয়েছে। যাইহোক, এটি সম্প্রতি সমাধান করা হয়েছে। JEP 263 সমস্যাটি দেখুন : উইন্ডোজ এবং লিনাক্সের হাইডিপিআই গ্রাফিক্স এবং আপগ্রেড

সুতরাং, হরফ আকার বাড়ানো কাজ করে না (কারণ এটি অন্যান্য জিনিসগুলি বাড়ায় না); jvm আর্গুমেন্ট -Dsun.java2d.dpiaware=falseকাজ করে না (কারণ এটি সত্যই সমর্থিত নয়); এবং ম্যানিফেস্ট ফাইল + রেজিস্ট্রি সম্পাদনা (উইন্ডোজের জন্য) ঠিক কাজ করে না।

তারপরে, আপনার এটি জেআরই 9 এ চালানো দরকার কারণ এটি সত্যিই এই বৈশিষ্ট্যটিকে সমর্থন করে।


জাভা 9 এটি ঠিক করে দিলে আমি সত্যিই উত্তেজিত হব।
music2myear

3
এটি আপনাকে কোডটি পুনরায় কম্পাইল করতে হবে তা উল্লেখ করতে ব্যর্থ। কেবল একই জাভা 8- জাভা 9+ এ অ্যাপ্লিকেশনটি চালানো আচরণটি পরিবর্তন করবে না
রামহাউন্ড

জাভা 9 HiDPI প্রোগ্রাম সঞ্চালনের solves অনেক সমস্যার। goo.gl/3zmL7b
জেরনট ক্রস্ট

3
@ র‌্যামাউন্ডে আপনাকে পুনরায় সংকলন করতে হবে না। আমি মাত্র জাভা 8 এর জন্য জেডিকে 8 দিয়ে একটি জার তৈরি করেছি যা 4K স্ক্রিন এবং 200% স্কেল সেটিং সহ ডাব্লু 10 সিস্টেমে একটি পূর্ণস্ক্রিন জেপানেলের পেইন্ট () পদ্ধতিটিকে ওভাররাইড করে। জাভা 8 এর জাভা.এক্সি দিয়ে চালান, পদ্ধতিতে প্রদত্ত গ্রাফিক্স 2 ডি অবজেক্টটির 1 টি স্কেলিং রয়েছে এবং জাপাপ্যানেলের গেটউইথ / উচ্চতা 3840x2160 রয়েছে। জাভা 9 এর java.exe দিয়ে চালান, স্কেলিংটি 2 এবং প্রস্থ / উচ্চতা 1920x1080।
ড্রিমস্পেসের সভাপতি

1
আপনি জাভা 9 তে একটি নতুন পদ্ধতি পাবেন: স্ক্রিন.জেটপ্রিমারি ()। GetOutputScaleX (); যা আসলে কাজ করে। (অন্য বিকল্পটি জাভাএফএক্স স্ক্রিন আকার, (স্ক্রিন.জেটপ্রাইমারি ()। গেটভিউজুয়ালবাউন্ডস ()) ব্যবহার করে যা কাজ করে এবং এটিকে সরঞ্জামদণ্ডের মধ্যে বিভক্ত করে দেয় .সেট ডিফল্টটুলকিট ()। GetScreenSize (), আপনি দেখতে পাবেন যে আপনি অনুমান করতে পারেন ডিপিআই-তে নির্বাচিত: 200% এর ফলাফল প্রায় 2.0 হয়, তবে দুর্ভাগ্যক্রমে 125% এর ফলাফল এখনও 1.0 স্কেলিং শতাংশে আসে তবে যাইহোক, জাভা 9 এ যাওয়ার পরেও আমি দেখতে পেলাম আমার জিইউআইগুলি সমস্ত বোতামগুলি প্রসারিত করার সাথে সাথে পুরোপুরি ধ্বংস হয়ে গেছে, তবে কয়েকটি স্থির ছিল (ফাঁক, প্যাডিং ইত্যাদির জন্য ব্যবহৃত) didn't না
মোম_আরক্ষীয়

4

সমস্ত জাভা এক্সিকিউটেবলকে প্রশাসক পাওয়ারশেলে (উইন-এক্স, এ) "সিস্টেম" এ "বৈশিষ্ট্য> সামঞ্জস্যতা> ডিপিআই স্কেলিং মোড" সেট করতে বাধ্য করতে, চালান:

$javaexes = (Get-ChildItem -path "$env:ProgramFiles\Java","${env:ProgramFiles(x86)}\java" -filter java?.exe -recurse  | Where-Object {$_.Name -match "java(|w).exe"} ).fullname

$javaexes | foreach {REG ADD "HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers"  /V $_ /T REG_SZ /D "~ DPIUNAWARE" /F}

পূর্বাবস্থা:

$javaexes | foreach {REG delete "HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers"  /V $_ /f}

এইচকেসিইউ এর পরিবর্তে আপনি এইচকেএলএম ব্যবহার করতে পারেন তবে জাভা * .এক্সই ফাইলের বৈশিষ্ট্য> সামঞ্জস্যতা ডায়ালগে আপনি নিজেই আর ডিপিআই-স্কেলিং সেটিং পরিবর্তন করতে পারবেন না।


2

আপনাকে রেজিডিতে PreferExternManifest সেট করতে হবে এবং নীচের স্ট্যাকওভারফ্লো উত্তর https://stackoverflow.com/a/39372897 হিসাবে প্রদত্ত java.exe এবং javaw.exe এর জন্য কাস্টম ম্যানিফেস্ট তৈরি করতে হবে


3
সুসংবাদ, ফল ক্রিয়েটার্স আপডেট আপনাকে আইটেমটিতে ডান ক্লিক করে, বৈশিষ্ট্য নির্বাচন করে এবং তারপরে সামঞ্জস্যতা ট্যাব দ্বারা স্কেলিং আচরণ পরিবর্তন করতে দেয়। একটি কাস্টম বহিরাগত মেনিফেস্ট তৈরি করার দরকার নেই - যা দুর্দান্ত।
রিচার্ড

0

বয়স্কের সমাধানটি ভাল, তবে আপনি যদি উইন্ডোজে একটি জার ফাইল চালাতে চান এবং এর সাথে সামঞ্জস্য করার বিকল্প নেই?

সি: \ প্রোগ্রাম ফাইলগুলি (x86) \ জাভা \ জের \ বিনে যান এবং javaw.exe সন্ধান করুন। ডান ক্লিক, বৈশিষ্ট্য, সামঞ্জস্যতা ট্যাব, "ওভাররাইড উচ্চ ডিপিআই স্কেলিং আচরণ" পরীক্ষা করুন এবং "সিস্টেম" নির্বাচন করুন (নোট করুন "সিস্টেম বর্ধিত" আমার পক্ষে কাজ করে না)।

এখন জার ফাইল উইন্ডোগুলির পাঠযোগ্য পাঠ্যের সাথে সঠিকভাবে স্কেল করা উচিত। যদি তা না হয় তবে এর অর্থ হ'ল উইন্ডোজ জার টাইপের ফাইলগুলিকে javaw.eve এর সাথে লিঙ্ক করে না এটি যেমন করা উচিত। একটি তৃতীয় পক্ষের ফিক্স পাওয়া যায়: https://johann.loefflmann.net/en/software/jarfix/index.html


0

জাভা 10 চেষ্টা করুন।

আমি দেখতে পেয়েছি যে -Dsun.java2d.dpiaware = चुकीটি জাভা 9 বা 10 তে কাজ করে না Also এছাড়াও জাভা 8 এবং 9 এর জন্য আমার সুইং অ্যাপ্লিকেশনটি ছোট, তবে জাভা 10 টি আকার সঠিকভাবে উইন্ডোতে!

সুতরাং এমন কোনও অ্যাপ্লিকেশানের জন্য যা আপনি ব্যাট ফাইল থেকে চালাতে পারেন যেমন: java -jar xxx.jar

আমি সবেমাত্র জাভাআহোম = = \ জাভা_10 এবং প্যাট =% জাভাহোম% \ বিন; ব্যাট ফাইলে% PATH% যুক্ত করেছি।

java -jar xxx.jar


-2

আমি এই সমাধানগুলির বেশিরভাগ ক্ষেত্রে চেষ্টা করেছি, তবে যে আমার জন্য কাজ করেছিল সে হ'ল নিম্নলিখিত স্থানে পাওয়া ফাইলগুলিতে সিস্টেমের সামঞ্জস্যতা মোডটি সেট করা:

C:\Program Files (x86)\Common Files\Oracle\Java\javapath

2
সুপার ব্যবহারকারীকে স্বাগতম! দয়া করে উত্তর হিসাবে "ধন্যবাদ" বা "এটি আমার জন্য কাজ করেছে" যুক্ত করবেন না। সাইটে কিছুটা সময় ব্যয় করুন এবং আপনার পছন্দ মত উত্তরগুলি আপলোড করার জন্য আপনি যথেষ্ট সুযোগ-সুবিধাগুলি অর্জন করতে পারবেন , যা আপনাকে ধন্যবাদ বলার দুর্দান্ত ব্যবহারকারী উপায়।
বার্তেব

এটি অন্য কারও উত্তরের মন্তব্য হতে পারে। সমাধানের জন্য, এটি প্রয়োগ করা প্রয়োজন সামঞ্জস্য সেটিংস থেকে java.exeএবং / অথবা javaw.exeঅথবা অন্য সুপারিশ ব্যবহার করুন। javapathফোল্ডারের সর্বশেষ জাভা এক্সেকিউটেবল সিস্টেমে ইনস্টল লিঙ্ক উপস্থিত রয়েছে। এইভাবে সেটিংস প্রয়োগ Program Filesকরা যথেষ্ট হবে।
আলেক্সি ইভানভ

-4

কমান্ড প্রম্পট ব্যবহার করে দৌড়ানোর সময় আমি বুদ্ধিমান ডিপিআই পেতে সক্ষম হয়েছি:

%SystemRoot%\system32\cmd.exe /C C:\your.file.path\yourJarFile.jar

এটি সত্যই প্রশ্নের উত্তর দেয় না এবং এটি java.exeবা এর কোনও হাই ডিপিআই সেটিংস পরিবর্তন করে না javaw.exe
আলেক্সি ইভানভ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.