de-vraag
  • Pertanyaan
  • Tag
  • Pengguna
Notifikasi
Imbalan
Registrasi
Setelah Anda mendaftar, Anda akan diberitahu tentang balasan dan komentar untuk pertanyaan Anda.
Gabung
Jika Anda sudah memiliki akun, masuk untuk memeriksa pemberitahuan baru.
Akan ada hadiah untuk pertanyaan, jawaban, dan komentar tambahan.
Lebih
Sumber
Sunting
 geretd
geretd
Question

cara memperbaiki groovy.lang.MissingMethodException: Tidak ada tanda tangan metode:

Saya mencoba menggunakan metode ini tanpa penutupan

def copyAndReplaceText(source, dest, targetText, replaceText){
    dest.write(source.text.replaceAll(targetText, replaceText))
}

def source = new File('C:/geretd/resumebak.txt') //Hello World
def dest = new File('C:/geretd/resume.txt') //blank

copyAndReplaceText(source, dest){
    it.replaceAll('Visa', 'Passport!!!!')
}

tetapi ketika saya menjalankannya saya mendapatkan kesalahan berikut:

groovy.lang.MissingMethodException: No signature of method: ConsoleScript3.copyAndReplaceText() is applicable for argument types: (java.io.File, java.io.File, ConsoleScript3$_run_closure1) values: [C:\geretd\resumebak.txt, C:\geretd\resume.txt, ...]
Possible solutions: copyAndReplaceText(java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object)

at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:55)

at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:78)

at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:49)

at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:133)

at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:149)

Apa yang saya lakukan salah?

20 2013-07-01T18:27:59+00:00 3
 tim_yates
tim_yates
Pertanyaan edit 1 Juli 2013 в 6:56
Pemrograman
groovy
Pertanyaan ini memiliki :value jawaban dalam bahasa Inggris, untuk membacanya masuk ke akun Anda.
Solution / Answer
 Will
Will
1 Juli 2013 в 6:37
2013-07-01T18:37:48+00:00
Lebih
Sumber
Sunting
#19801697

Karena Anda mengoper tiga argumen ke metode empat argumen. Juga, Anda tidak menggunakan closure yang dilewatkan.

Jika Anda ingin menentukan operasi yang akan dibuat di atas konten source, maka gunakan closure. Ini akan menjadi seperti ini:

def copyAndReplaceText(source, dest, closure){
    dest.write(closure( source.text ))
}

// And you can keep your usage as:
copyAndReplaceText(source, dest){
    it.replaceAll('Visa', 'Passport!!!!')
}

Jika Anda akan selalu menukar string, oper kedua-duanya, seperti yang sudah dinyatakan oleh method signature Anda:

def copyAndReplaceText(source, dest, targetText, replaceText){
    dest.write(source.text.replaceAll(targetText, replaceText))
}

copyAndReplaceText(source, dest, 'Visa', 'Passport!!!!')
 Will
Will
Jawaban edit 1 Juli 2013 в 9:18
16
0
Bhuvnesh Incedo
Bhuvnesh Incedo
4 Juni 2018 в 9:02
2018-06-04T09:02:09+00:00
Lebih
Sumber
Sunting
#19801699

Ini mungkin juga karena Anda mungkin telah memberikan nama kelas dengan semua huruf dalam huruf kecil sesuatu yang tidak didukung oleh Groovy (tahu versi 2.5.0).

nama kelas - Pengguna diterima tetapi pengguna tidak.

1
0
 Sulteric
Sulteric
22 Agustus 2017 в 1:19
2017-08-22T13:19:22+00:00
Lebih
Sumber
Sunting
#19801698

Anda juga bisa mendapatkan error ini jika objek yang Anda oper ke metode tidak sesuai urutan. Dengan kata lain, katakanlah metode Anda mengambil, secara berurutan, string, integer, dan tanggal. Jika Anda mengoper tanggal, lalu string, lalu integer, Anda akan mendapatkan pesan error yang sama.

0
0
Tambahkan pertanyaan
Kategori
Semua
Teknologi
Budaya / Rekreasi
Kehidupan / Seni
Ilmu Pengetahuan
Profesional
Bisnis
Pengguna
Semua
Baru
Populer
1
Roxana Elizabeth CASTILLO Avalos
Terdaftar 4 hari yang lalu
2
Hideo Nakagawa
Terdaftar 5 hari yang lalu
3
Sergiy Tytarenko
Terdaftar 6 hari yang lalu
4
shoxrux azadov
Terdaftar 1 minggu yang lalu
5
Koreets Koreytsev
Terdaftar 1 minggu yang lalu
ID
JA
KO
RU
TR
© de-vraag 2022
Sumber
stackoverflow.com
di bawah lisensi cc by-sa 3.0 dengan atribusi