Ini kodenya:
package mscontroller;
import javax.swing.*;
import com.apple.eawt.Application;
public class Main {
public static void main(String[] args)
{
Application app = new Application();
app.setEnabledAboutMenu(true);
AMEListener listener = new AMEListener();
app.addApplicationListener(listener);
JFrame mainFrame = new JFrame("Application Menu Example");
mainFrame.setSize(500, 500);
mainFrame.setVisible(true);
}
}
ini kesalahannya:
Exception in thread "main" java.lang.Error: Unresolved compilation
problems: Access restriction: The type 'Application' is not API
(restriction on required library
'/Library/Java/JavaVirtualMachines/jdk1.8.0_11.jdk/Contents/Home/jre/lib/rt.jar')
Access restriction: The constructor 'Application()' is not API
(restriction on required library
'/Library/Java/JavaVirtualMachines/jdk1.8.0_11.jdk/Contents/Home/jre/lib/rt.jar')
Access restriction: The type 'Application' is not API (restriction on
required library
'/Library/Java/JavaVirtualMachines/jdk1.8.0_11.jdk/Contents/Home/jre/lib/rt.jar')
Access restriction: The method
'Application.setEnabledAboutMenu(boolean)' is not API (restriction on
required library
'/Library/Java/JavaVirtualMachines/jdk1.8.0_11.jdk/Contents/Home/jre/lib/rt.jar')
AMEListener cannot be resolved to a type AMEListener cannot be
resolved to a type
at mscontroller.Main.main(Main.java:9)
gerhana mengatakan ini:
Pembatasan akses: Jenis 'Aplikasi' bukan API (pembatasan pada perpustakaan yang dibutuhkan '/Library/Java/JavaVirtualMachines/jdk1.8.0_11.jdk/Contents/Home/jre/lib/rt.jar')
Jawaban:
Ini terjadi pada saya juga, dan jawaban yang diberikan di sini sudah tidak memuaskan, jadi saya melakukan penelitian sendiri.
Latar Belakang: Pembatasan akses Eclipse
Eclipse memiliki mekanisme yang disebut pembatasan akses untuk mencegah Anda menggunakan kelas secara tidak sengaja yang menurut Eclipse bukan bagian dari API publik. Biasanya, Eclipse benar tentang hal itu, dalam kedua pengertian: Kami biasanya tidak ingin menggunakan sesuatu yang bukan bagian dari API publik. Dan Eclipse biasanya benar tentang apa yang ada dan apa yang bukan bagian dari API publik.
Masalah
Sekarang, mungkin ada situasi, di mana Anda ingin menggunakan Non-API publik, seperti
sun.misc
(Anda seharusnya tidak, kecuali Anda tahu apa yang Anda lakukan). Dan mungkin ada situasi, di mana Eclipse tidak sepenuhnya benar (itulah yang terjadi pada saya, saya hanya ingin menggunakannyajavax.smartcardio
). Dalam hal ini, kami mendapatkan kesalahan ini di Eclipse.Larutan
Solusinya adalah mengubah batasan akses.
javax/smartcardio/**
", bagi Anda mungkin malah "com/apple/eawt/**
".sumber
Saya mengalami masalah yang sama. Ketika saya awalnya membuat proyek java di Eclipse saya menentukan JRE 8. Ketika saya pergi ke jalur pembangunan proyek dan mengedit Perpustakaan Sistem JRE, lingkungan eksekusi Java 8 dipilih. Ketika saya memilih untuk menggunakan "Alernate JRE" (masih java 8) itu memperbaiki kesalahan untuk saya.
sumber
Menambahkan izin yang dapat diakses javafx dalam gerhana oksigen, masuk ke proyek> properti> java build path> libraries> kemudian perluas perpustakaan dan klik dua kali pada> Aturan akses di sana Anda mengatur izin. Resolusi: Pola Aturan yang Dapat Diakses: javafx / **
sumber
Untuk memulainya ( dan tidak terkait ), membuat instance
Application
kelas sendiri tampaknya bukan tujuan penggunaannya. Dari apa yang dapat dibaca dari sumbernya , Anda diharapkan menggunakan instance statis yang dikembalikan olehgetApplication()
.Sekarang mari kita ke laporan kesalahan Eclipse. Aku sudah berlari ke dalam masalah yang sama baru-baru ini:
Access restriction: The method ... is not API (restriction on required project)
. Saya menyebut metode tersebut sebagai metode objek yang mewarisi metode itu dari kelas super. Yang harus saya lakukan adalah menambahkan paket super class ke dalam paket yang diimpor oleh plugin saya.Namun, ada banyak penyebab kesalahan yang berbeda berdasarkan "pembatasan proyek / perpustakaan yang diperlukan ". Mirip dengan masalah yang dijelaskan di atas, tipe yang Anda gunakan mungkin memiliki dependensi untuk paket yang tidak diekspor oleh perpustakaan atau mungkin tidak diekspor sendiri. Dalam hal ini Anda dapat mencoba melacak paket yang hilang dan mengekspornya sendiri, seperti yang disarankan di sini , atau coba Aturan Akses. Skenario lain yang mungkin termasuk:
Ini berakhir lebih sebagai medley masalah yang terkait dengan pembatasan daripada jawaban yang sebenarnya. Tetapi karena pembatasan pada proyek yang diperlukan adalah kesalahan serbaguna untuk dilaporkan, resep yang sempurna mungkin masih dapat ditemukan.
sumber
Saya punya masalah ini karena segi proyek yang terkait dengan proyek saya adalah versi java yang salah.
Untuk memperbaikinya, saya melakukan yang berikut:
Ini akan membangun kembali proyek Anda dan mudah-mudahan kesalahan akan teratasi.
sumber
Kami harus mengubah aplikasi kami agar sesuai dengan JDK 1.8 menggunakan Window-> Preferences-> Java-> Installed JREs . Namun, setelah mengubah itu, Pustaka Sistem JRE yang ditentukan dalam Project Explorer masih salah. Untuk memperbaikinya, klik kanan pada "JRE System Library [salah-jre-sini]" dan ubah dari lingkungan Eksekusi: ke "Workspace Default (yer-default-here)"
sumber
Berhasil: Properti Proyek -> ProjectFacets -> Runtimes -> jdk1.8.0_45 -> Terapkan
sumber
Di bilah menu Eclipse teratas:
sumber
Jika Anda mengalami masalah yang sama menggunakan Spring Tool Suite:
IDE yang mendasari Spring Tool Suite sebenarnya adalah Eclipse. Saya mendapatkan kesalahan ini sekarang mencoba menggunakan beberapa
com.sun.net
kelas. Untuk menghapus kesalahan ini dan mencegahnya muncul di platform Eclipse Luna SR1 (4.4.2) dari STS:Anda baik untuk pergi.
sumber
Punya masalah yang sama. Inilah cara saya menyelesaikannya: Buka Package Explorer. Klik kanan pada JRE System Library dan pergi ke Properties. Di Classpath Container> Pilih JRE untuk jalur pembangunan proyek, pilih opsi ketiga (WorkREace default JRE).
Sumber: https://thenewboston.com/forum/topic.php?id=3917
sumber
Buka pengaturan berikut:
Window -> Preferences -> Java-Compiler-Errors / Warnings-Deprecated dan dibatasi API-Forbidden reference (aturan akses)
Atur ke
Warning
atauIgnore
.sumber
Kami menggunakan IBM Rational Application Developer (RAD) dan memiliki masalah yang sama.
Pesan eror:
Pembatasan akses: Jenis 'JAXWSProperties' bukan API (pembatasan pada pustaka yang diperlukan 'C: \ IBM \ RAD95 \ jdk \ jre \ lib \ rt.jar')
Larutan:
pergi ke java build path dan di bawah tab Library, hapus JRE System Library. Kemudian lagi Tambahkan Perpustakaan -> JRE System Library
sumber
Dalam Eclipse Mars.2 Rilis (4.5.2):
Project Explorer -> Context menu -> Properties -> JavaBuildPath -> Libraries
pilih JRE ... dan tekan Edit: Beralih ke JRE Workspace (jdk1.8.0_77)
Bekerja untukku.
sumber
Saya mengalami eclipse JRE 8.112, tidak yakin apakah itu penting tetapi yang saya lakukan adalah ini:
Ini menyelesaikan masalah saya.
sumber
Saya cukup menambahkan e (fx) clipse di pasar gerhana. Mudah dan sederhana
sumber
Saya menggunakan neon gerhana 3. Saya hanya ingin menggunakan javafx.application.Application, jadi saya mengikuti jawaban Christian Hujer di atas dan berhasil. Hanya beberapa tips: aturan akses sangat mirip dengan pernyataan impor. Bagi saya, aturan akses yang saya tambahkan adalah "javafx / application / **". Cukup ganti titik dalam pernyataan impor dengan garis miring dan itulah aturannya. Semoga itu bisa membantu.
sumber
Saya punya masalah yang sedikit berbeda. Dalam Project - Properties - Libraries - JRE library, saya memiliki versi lib JRE yang salah. Hapus dan atur yang sebenarnya, dan voila - semua
Access restriction...
peringatan tidak ada.sumber
Bahkan jika itu pertanyaan lama, bagi saya di Eclipse saya klik kanan pada folder Src dan properti (Alt + Enter) dan centang untuk
Ignore optional compile problems
menghapus kesalahan.sumber
Jika seseorang mengalami masalah ini hanya di alat CI Anda saat menjalankan maven, apa triknya bagi saya adalah menentukan secara eksplisit lingkungan eksekusi di komputer Anda
MANIFEST.MF
.Dalam kasus saya, saya melakukan ini dengan memasukkan baris berikut dalam file manifes bundel OSGi saya:
sumber