Anda sedang melihat dokumentasi Apigee Edge.
Buka dokumentasi
Apigee X. info
ResourceDoesNotExist
Pesan Error
Deployment proxy API melalui UI Edge atau API pengelolaan Edge gagal dengan pesan error ini:
Error Deploying Revision <var>revision_number</var> to <var>environment</var>
Resource with name <var>ResourceURL</var> and type java does not exist.
Contoh Pesan Error
Error Deploying Revision 1 to test
Resource with name myresource.jar and type java does not exist.
Contoh Screenshot Error

Penyebab
Jika resource yang ditentukan dalam elemen <ResourceURL> di kebijakan JavaCallout tidak ada di level proxy API, lingkungan, atau organisasi, maka deployment proxy API akan gagal.
Diagnosis
Identifikasi nama lingkungan dan resource. Anda dapat menemukan informasi ini dalam pesan error. Misalnya, dalam error berikut, lingkungannya adalah
testdan nama resource yang digunakan dalam elemen <ResourceURL>adalahmyresource.jar.Error Deploying Revision 1 to test Resource with name myresource.jar and type java does not exist.Tentukan kebijakan JavaCallout yang menggunakan resource yang diidentifikasi pada langkah #1 di atas.
Misalnya, kebijakan berikut menentukan nilai <
ResourceURL>sebagaimyresource.jar, yang cocok dengan nilai dalam pesan error:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <JavaCallout name="hello-java"> <ClassName>com.apigeesample.HelloJava</ClassName> <ResourceURL>java://myresource.jar</ResourceURL> </JavaCallout>Tentukan apakah resource merupakan bagian dari proxy API yang gagal atau diupload di tingkat lingkungan atau organisasi. Jika tidak, berarti inilah penyebab error.
Buka tab Resources di panel Navigator pada editor proxy API untuk melihat semua resource yang diupload di tingkat proxy API. Dalam contoh ini, proxy API tidak memiliki resource yang diupload.

Resource dapat tersedia di level lingkungan atau organisasi. Untuk mengetahui informasi selengkapnya, lihat File resource.
Untuk menentukan apakah resource ada di tingkat lingkungan, lakukan panggilan API berikut menggunakan curl:
curl -v -u <strong>email </strong>"https://api.enterprise.apigee.com/v1/organizations/myorg/environments/myenv/resourcefiles/java/myresource.jar"Untuk menentukan apakah resource ada di tingkat organisasi, lakukan panggilan API berikut menggunakan curl, dengan menghilangkan detail lingkungan:
curl -v -u email "https://api.enterprise.apigee.com/v1/organizations/myorg/resourcefiles/java/myresource.jar"
Jika Anda menerima kode status 404 sebagai respons untuk API ini, berarti resource tidak ada di tingkat organisasi dan lingkungan.
Jika resource tidak tersedia di tingkat proxy API, organisasi, dan lingkungan, error deployment akan ditampilkan:
Resource with name myresource.jar and type java does not exist. ```
Resolusi
Pastikan resource yang ditentukan dalam elemen <ResourceURL> ada di tingkat proxy API, lingkungan, atau organisasi. Untuk mengetahui informasi selengkapnya, lihat File resource.
Untuk memperbaiki contoh kebijakan JavaCallout yang ditampilkan di atas, upload file JAR di tingkat yang sesuai (proxy API, organisasi, atau tingkat lingkungan).
NoResourceForURL
Pesan Error
Deployment proxy API melalui UI Edge atau API pengelolaan Edge gagal dengan pesan error ini:
Error in deployment for environment <var>environment</var>
The revision is deployed, but traffic cannot flow. Could not locate a resource with URL <var>ResourceURL</var>
Contoh Pesan Error
Error in deployment for environment test
The revision is deployed, but traffic cannot flow. Could not locate a resource with URL java://myresource.jar
Contoh Screenshot Error

Penyebab
Error ini dapat terjadi jika file resource rusak atau diupload sebagian, meskipun tampaknya ada di tingkat proxy API, lingkungan, atau organisasi.
Diagnosis
Identifikasi lingkungan dan nama resource. Anda dapat menemukan informasi ini dalam pesan error. Misalnya, dalam error berikut, nama lingkungan adalah
testdan Nama Resource yang digunakan dalam elemen <ResourceURL>adalahmyresource.jar.Error in deployment for environment test The revision is deployed, but traffic cannot flow. Could not locate a resource with URL java://myresource.jarPastikan resource diupload di tingkat proxy API, lingkungan, atau organisasi. Dalam contoh di bawah, Anda dapat melihat bahwa resource
myresource.jardiupload di tingkat proxy API.
Resource dapat tersedia di level lingkungan atau organisasi. Untuk mengetahui informasi selengkapnya, lihat File resource.
Untuk menentukan apakah resource ada di tingkat lingkungan, lakukan panggilan API berikut menggunakan curl:
curl -v -u <strong>email </strong>"https://api.enterprise.apigee.com/v1/organizations/myorg/environments/myenv/resourcefiles/java/myresource.jar"Untuk menentukan apakah resource ada di tingkat organisasi, lakukan panggilan API berikut menggunakan curl, dengan menghilangkan detail lingkungan:
curl -v -u email "https://api.enterprise.apigee.com/v1/organizations/myorg/resourcefiles/java/myresource.jar"Jika Anda menerima kode status 404 sebagai respons untuk API ini, berarti resource tidak ada di tingkat organisasi dan lingkungan.
Resolusi
- Jika Anda menentukan bahwa resource ada di tingkat proxy API, organisasi, atau lingkungan, hapus resource dan upload ulang, seperti yang dijelaskan di langkah 2. Jika tidak, lewati ke langkah 3.
Untuk menghapus resource di tingkat proxy API, buka tab Resources di panel Navigator editor proxy API, lalu klik tombol “X” di samping resource seperti yang ditunjukkan di bawah.

Untuk menghapus resource di tingkat lingkungan atau organisasi, gunakan kata kerja DELETE pada panggilan API yang sebelumnya digunakan dalam langkah-langkah diagnosis. Misalnya, untuk menghapus resource di tingkat lingkungan, masukkan perintah berikut:
curl -X DELETE -v -u <strong>email </strong>"https://api.enterprise.apigee.com/v1/organizations/myorg/environments/myenv/resourcefiles/java/myresource.jar"Upload file JAR) di tingkat yang sesuai (proxy API, organisasi, atau tingkat lingkungan.
Jika mengupload ulang resource tidak membantu, maka Pemroses Pesan yang terpengaruh perlu dimulai ulang. Jika Anda menggunakan Apigee Edge di Cloud, hubungi Dukungan Apigee. Jika Anda adalah pengguna Private Cloud, lihat Memulai, menghentikan, memulai ulang, dan memeriksa status Apigee Edge.
JavaCalloutInstantiationFailed
Pesan Error
Deployment proxy API melalui UI Edge atau API pengelolaan Edge gagal dengan pesan error ini:
Error in deployment for environment <var>environment</var>
The revision is deployed, but traffic cannot flow. Failed to instantiate the JavaCallout Class <var>class_name</var>
Atau
Error in deployment for environment <var>environment</var>.
The revision is deployed and traffic can flow, but flow may be impaired. Failed to instantiate the JavaCallout Class <var>class_name</var>
Contoh Pesan Error
Error in deployment for environment test
The revision is deployed, but traffic cannot flow. Failed to instantiate the JavaCallout Class my.class
Contoh Screenshot Error

Penyebab
Berikut penyebab umum error ini
| Cause | Deskripsi |
| File JAR tidak ada | File JAR yang berisi class Java yang diidentifikasi dalam error tidak diupload. |
| File JAR rusak | File JAR yang berisi class Java yang diidentifikasi dalam error rusak/diupload sebagian. |
| File Class tidak ada | File class Java yang diidentifikasi dalam error bukan bagian dari file JAR yang ditentukan dalam >ResourceURL< atau file JAR dependen. |
| Masalah Kode Java | Ada error dalam kode, seperti konstruktor yang tidak ada, masalah dependensi kode, atau masalah lainnya. |
Langkah Diagnosis Umum
Identifikasi nama lingkungan dan Class yang gagal diimpor. Misalnya, dalam pesan error berikut, nama lingkungan adalah
testdan nama Class adalahmy.class:Error in deployment for environment test The revision is deployed, but traffic cannot flow. Failed to instantiate the JavaCallout Class my.classPenyebab: File JAR tidak ada
Diagnosis
- Tentukan file JAR yang seharusnya berisi class (diidentifikasi pada langkah #1 di atas) dan yang tidak dapat dibuat.
- Periksa apakah file JAR tertentu diupload di tingkat proxy API, organisasi, atau lingkungan. Jika file JAR tidak diupload ke salah satu tingkat, lanjutkan ke bagian Penyelesaian.
- Jika file JAR diupload, buka Penyebab: File JAR Rusak.
Resolusi
- Jika file JAR rusak atau diupload sebagian, bangun ulang JAR dan upload file JAR di tingkat yang sesuai (proxy API, organisasi, atau tingkat lingkungan).
- Deploy ulang proxy API.
Penyebab: File JAR rusak
Diagnosis
- Tentukan file JAR yang seharusnya berisi class (yang diidentifikasi pada langkah #1 di atas) yang tidak dapat dibuat.
- Periksa apakah file JAR tertentu rusak. Misalnya, jika Anda tidak dapat mengekstrak file karena rusak atau diupload sebagian. Jika rusak, buka Solusi.
- Jika file JAR tidak rusak, buka Penyebab: File Class Tidak Ada.
Resolusi
- Bangun kembali file JAR yang rusak dan upload file JAR) di tingkat yang sesuai (proxy API, organisasi, atau tingkat lingkungan.
- Deploy ulang proxy API.
Penyebab: File Class Tidak Ada
Diagnosis
- Periksa apakah file class Java tertentu (yang diidentifikasi pada langkah #1 di atas) adalah bagian dari file JAR yang ditentukan dalam >ResourceURL< atau file JAR dependen.
- Jika file class tidak ada di salah satu file JAR, Anda telah menentukan penyebab error. Buka Resolusi.
- Jika file class ada di salah satu file JAR yang ditentukan dalam kebijakan JavaCallout, berarti ada masalah dengan kode Java atau class dependen yang menyebabkan error ini. a. Jika Anda adalah pengguna Public Cloud, hubungi Dukungan Apigee. b. Jika Anda adalah pengguna Private Cloud, lanjutkan ke Penyebab: Masalah Kode Java.
Resolusi
- Bangun kembali JAR dengan file class yang hilang dan upload file JAR di level yang sesuai (proxy API, organisasi, atau level lingkungan).
- Deploy ulang Proxy API.
Penyebab: Masalah Kode Java
Langkah-Langkah Diagnostik hanya untuk Pengguna Private Cloud
Diagnosis
- Periksa log Message Processor (
/opt/apigee/var/log/edge-message-processor/system.logdan/opt/apigee/var/log/edge-message-processor/configurations.log). Anda mungkin melihat pengecualian yang mirip dengan contoh di bawah:
2019-07-05 05:40:13,240 org:myorg env:staging target:/organizations/myorg/apiproxies/MyAPI/revisions/5 action:add context-id: mode: Apigee-Main-53 ERROR CONFIG-CHANGE - AbstractConfigurator.add() : Add null to Step failed, reason: {} com.apigee.kernel.exceptions.spi.UncheckedException: Failed to instantiate the JavaCallout Class <class name> at com.apigee.steps.javacallout.JavaCalloutStepDefinition.newInstance(JavaCalloutStepDefinition.java:116) at com.apigee.messaging.runtime.StepDefinition.getStepDefinitionExecution(StepDefinition.java:218) …<snipped> Caused by: java.lang.reflect.InvocationTargetException: null at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at com.apigee.steps.javacallout.JavaCalloutStepDefinition.access$100(JavaCalloutStepDefinition.java:41) at com.apigee.steps.javacallout.JavaCalloutStepDefinition$CallOutWrapper.initialize(JavaCalloutStepDefinition.java:131) at com.apigee.steps.javacallout.JavaCalloutStepDefinition$CallOutWrapper.<init>(JavaCalloutStepDefinition.java:126) ... 42 common frames omitted Caused by: <Reason> ...<snipped>Baca pengecualian dengan cermat untuk memahami alasan kegagalan. Biasanya, hal ini dapat menunjukkan adanya masalah dalam kode Java Anda.
Resolusi
- Bergantung pada penyebab kegagalan, Anda mungkin harus memperbaiki masalah dalam kode Java.
- Bangun kembali JAR dengan file class yang hilang dan upload file JAR di level yang sesuai (proxy API, organisasi, atau level lingkungan).
- Deploy ulang Proxy API.
Upload file JAR
Pastikan elemen resource dengan semua class yang diperlukan ada di tingkat API Proxy, lingkungan, atau organisasi. Untuk mengetahui informasi selengkapnya, lihat File resource.
Untuk mengupload resource di tingkat proxy API, klik + (tanda plus) di tab Resources, lalu pilih Import file dan upload file dari komputer lokal Anda. Nama file harus cocok dengan elemen >ResourceURL<, tetapi tanpa awalan
java://.
Jika Anda ingin resource tersedia untuk lebih dari satu proxy API di lingkungan yang sama, upload resource ke lingkungan. Anda harus menggunakan Edge API, seperti yang dijelaskan dalam File resource.
Misalnya, masukkan panggilan API berikut dari mesin lokal untuk mengupload file yang ditentukan di tingkat lingkungan:
curl -v -u email -H "Content-Type: application/octet-stream" \ -X POST --data-binary @{classes.jar} \ "http://{mgmt_server}:{port}/v1/organizations/myorg/environments/myenv/resourcefiles?name=myresouce.jar&type=java"Lakukan panggilan API dari direktori yang sama dengan file.
Untuk membuat file tersedia untuk semua proxy API dalam semua lingkungan di organisasi, Anda dapat menghilangkan detail lingkungan di basepath. Contoh:
curl -v -u email -H "Content-Type: application/octet-stream" \ -X POST --data-binary @{classes.jar} \ "http://{mgmt_server}:{port}/v1/organizations/myorg/resourcefiles?name=myresouce.jar&type=java"