Catatan

Menunjukkan catatan yang berlabel _pengaturcaraan_

Cara Menyelesaikan Ralat InaccessibleObjectException pada Maven Build (JDK Upgrade Issue)

Nota Rujukan: Maven Build Fix Solusi JDK 8 Isu: InaccessibleObjectException semasa fasa war:war akibat sekatan modul pada JDK 16+. 1. Simptom Ralat Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make field private final java.util.Comparator java.util.TreeMap.comparator accessible 2. Langkah Penyelesaian (NetBeans) Klik kanan Project > Properties . Libraries : Tukar Java Platform ke JDK 1.8 . Sources : Set Source/Binary Format ke 1.8 . 3. Perintah Maven (Manual) set JAVA_HOME=C:\Path\To\jdk1.8.0 mvn clean install -Ppdsa(Prod) Status: BUILD SUCCESS | Rujukan: 20260401

Penyelesaian Ralat Maven: ojdbc14, JDK 6 Unsupported Version & TLS Protocol JDK 7

Imej
بِسْـــــــــمِ ï·²ِالرَّØ­ْÙ…َÙ†ِ الرَّØ­ِيم. اَللَّÙ‡ُÙ…َّ صَÙ„ِّÙ‰ عَÙ„َÙ‰ Ù…ُØ­َÙ…َّدٍٍ، ÙˆَعَÙ„َÙ‰ آلِÙ‡ِ Ù…ُØ­َÙ…َّدٍٍ Isi Kandungan: 1. Manual Install ojdbc14 & JTA 2. Isu Unsupported Version (JDK 6) 3. Isu Protocol Version TLS (JDK 7) 1. Manual Install ojdbc14 & JTA Gunakan arahan ini jika anda mendapat error Could not resolve dependencies untuk Oracle JDBC: mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc14 -Dversion=10.2.0.4.0 -Dpackaging=jar -Dfile=ojdbc14-10.2.0.4.0.jar -DgeneratePom=true 2. Isu Unsupported Version (JDK 6) Error penuh yang dikesan (Scroll ke bawah untuk lihat semua trace): java.lang.UnsupportedClassVersionError: org/codehaus/plexus/classworlds/launcher/Launcher : Unsupported major.minor version 51.0 at java.lang.ClassLoader.defineClass1(Native...

[t25d24] Penyulitan Data di AngularJS menggunakan Forge dan penyahsulitan menggunakan EJB Java EE 7 dan Java 8

Imej
بِسْـــــــــمِ ï·²ِالرَّØ­ْÙ…َÙ†ِ الرَّØ­ِيم . اَللَّÙ‡ُÙ…َّ صَÙ„ِّÙ‰ عَÙ„َÙ‰ Ù…ُØ­َÙ…َّدٍٍ، ÙˆَعَÙ„َÙ‰ آلِÙ‡ِ Ù…ُØ­َÙ…َّدٍٍ  Kali ini Tedi menerima satu kerja sekolah yang agak memeningkan di mana Tedi perlu menyulitkan satu data dari sistem front end yang menggunakan AngularJS dan kemudian nyahsulit data tersebut di bahagian back end menggunakan EJB (Enterprise JavaBeans) dan Java 8. Penyulitan data di AngularJS menggunakan forge Tedi bernasib baik kerana ada beberapa library yang boleh membantu Tedi mencapai matlamat tersebut. Library itu adalah forge . Memangangkan projek AngularJS ini menggunakan pengurus pakej bower maka perkara pertama adalah Tedi perlu install forge. bower install forge --save Kemudian Tedi perlu import forge ke dalam projek, memandangkan kami menggunakan requireJs cara import adalah seperti berikut:   Seterusnya Tedi boleh menggunakan forge untuk penyulitan data seperti berikut   Penyulitan data oleh forge menggunakan public key yang boleh kita jana menggunakan op...

[T21H20] SourceTree: Mati semasa klon projek baru

Imej
بِسْـــــــــمِ ï·²ِالرَّØ­ْÙ…َÙ†ِ الرَّØ­ِيم . اَللَّÙ‡ُÙ…َّ صَÙ„ِّÙ‰ عَÙ„َÙ‰ Ù…ُØ­َÙ…َّدٍٍ، ÙˆَعَÙ„َÙ‰ آلِÙ‡ِ Ù…ُØ­َÙ…َّدٍٍ Dua hari lalu mula dapat kerja sekolah baru kali ini berkaitan dengan ekosistem perniagaan pembalakan di Sarawak. Tedi pun mula mendapatkan capaian kepada semua sumber yang ada termasuk kod sumber. Tetapi kali ini ada masalah di mana SourceTree akan tiba-tiba mati semasa klon kod sumber projek tersebut daripada GitLab. Ralat Ralat yang Tedi perolehi melalui Event Viewer Windows 10 ialah: SourceTree.exe Framework Version: v4.0.30319 Description: The process was terminated due to an unhandled exception. Exception Info: System.IndexOutOfRangeException at SourceTree.Repo.RepoHandlerGitOld.GetDefaultBranch(System.String) at SourceTree.ViewModel.CloneNewDialogViewModel+<>c__DisplayClass212_0.<RefreshRemoteBranches>b__1() at System.Threading.Tasks.Task`1[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].InnerInvoke() at Sy...

Mock Static Function dengan PowerMockito

PowerMockito adalah satu library yang sangat membantu semasa kita menulis unit test untuk kod yang menggunakan function static yang menyukarkan kita untuk menggunakan mock. Ini adalah beberapa kes yang telah Tedi gunakan semasa menyiapkan kerja sekolah. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly() Mula-mula set @RunWith dan @PrepareForTest @RunWith(PowerMockRunner.class) @PrepareForTest({TransactionAspectSupport.class}) Kemudian set apa behaviour kita nak:     @Before    public void setUp() throws Exception {            MockitoAnnotations.initMocks(this);     PowerMockito.mockStatic(TransactionAspectSupport.class);     TransactionStatus transactionStatus = PowerMockito.mock(TransactionStatus.class);     PowerMockito.when(TransactionAspectSupport.currentTransactionStatus()).thenReturn(transactionStatus);     PowerMockito.doNothing().when(transactionStatus).setRollback...

Perbezaan di antara @Component, @Service, @Controller, dan @Repository dalam Spring Framework

Sebelum mengetahui perbezaan di antara @Component, @Service, @Controller, dan @Repository annotations dalam  Spring framework , adalah penting untuk kita memahami peranan @Component annotation dalam Spring. Pada permulaan Spring, semua beans diisytiharkan dalam satu XML file. Ia agak berserabut dalam projek besar dan Spring mengetahui masalah ini. Pada versi seterusnya Spring memperkenalkan annotation-based dependency injection dan Java-based configuration. Sejak Spring 2.5 annotation-based dependency injection diperkenalkan di mana Spring bean diimbas dan didaftarkan secara automatik menggunakan @Component annotation pada class. Ini bermakna tidak perlu lagi isytiharkan bean menggunakan tag <bean> dan inject dependency, sebaliknya semuanya dilakukan secara automatik. Fungsi ini dihidupkan dan dimatikan menggunakan tag <context:component-scan>. Apa @Service, @Controller, and @Repository annotation buat? Mereka adalah bentuk khusus buat @Component annotat...

[t20d28] SmartTomcat dalam IntelliJ IDEA Community

Imej
Smart Tomcat adalah satu plugin IntelliJ IDEA Community yang membantu kita debug aplikasi berasaskan web. Memandangkan Tadi setting Intellij Idea Tedi hilang setelah Tedi  delete   folder .idea, terpaksa Tedi tetapkan semula. Nasib baik masih ada ingatan bagaimana nak setup. Sebelum itu kena tambah dulu task dalam build.gradle. task explodedWar(type: Copy) { into "dist/exploded" war with war } Selepas itu kita tambah konfigurasi SmartTomcat, tapi Tedi malaslah nak taip, kome tengok gambar je lah ye. Ini pula adalah tetapan jika kita nak  execute apa-apa  task sebelum kita deploy aplikasi web tersebut. Sebagai contoh Tedi suruh Gradle clean war explodedWar ... iaitu kosongkan  folder , buat war, dan execute explodedWar.   Karangan ini telah diterbitkan buat pertama kali pada 20200428.

[T21H26] Kesilapan semasa guna AngularJS

بِسْـــــــــمِ ï·²ِالرَّØ­ْÙ…َÙ†ِ الرَّØ­ِيم . اَللَّÙ‡ُÙ…َّ صَÙ„ِّÙ‰ عَÙ„َÙ‰ Ù…ُØ­َÙ…َّدٍٍ، ÙˆَعَÙ„َÙ‰ آلِÙ‡ِ Ù…ُØ­َÙ…َّدٍٍ Controller tak tunggu function async habis kerja Silap susunan semasa declare dan panggil function Controller tak tunggu function async habis kerja Salah satu perkara yang Tedi tak berapa nak faham pasal AngularJS ini ialah function function dalam controller tak semestinya akan beroperasi ikut turutan. Akan ada function yang hanya dipanggil controller dan kemudian ditinggalkan tanpa menunggu ia pulangkan apa-apa. Function ini adalah function async. Kelebihannya proses load akan lebih pantas. Jadi kesilapan yang Tedi buat adalah Tedi mengharapkan fungsi async ni untuk return value yang akan digunakan function lain. Hasilnya function lain tu menerima nilai undefined kerana value yang sebenarnya hanya tiba setelah function lain ini dipanggil.  Rujukan:  AngularJS - Controller not waiting for a service return value in a conditional statement - Stack Overflow Untuk membaiki ma...

[t21d22] Bermain dengan Glassfish

Imej
بِسْـــــــــمِ ï·²ِالرَّØ­ْÙ…َÙ†ِ الرَّØ­ِيم . اَللَّÙ‡ُÙ…َّ صَÙ„ِّÙ‰ عَÙ„َÙ‰ Ù…ُØ­َÙ…َّدٍٍ، ÙˆَعَÙ„َÙ‰ آلِÙ‡ِ Ù…ُØ­َÙ…َّدٍٍ Kebanyakan projek yang Tedi terlibat kini menggunakan pelayan GlassFish. Seperti biasa mesti ada masalah, jadi Tedi dedikasikan laman ini untuk catatan masalah yang dihadapi. Gambar seekor Glass Fish. Gambar sekadar hiasan tiada kena mengena dengan cerita ini. Sumber:  Emanuel Goette, alias Crespo: Eclipse GlassFish fue liberado!! (emanuelpeg.blogspot.com) Kandungan:  Apakah itu GlassFish? Class name is wrong or classpath is not set for : org.postgresql.ds.PGSimpleDataSource No usable default domain No free port within range: 8181 There is a process already using the admin port 4848 java.lang.ClassNotFoundException: javax.xml.parsers.ParserConfigurationException not found by org.eclipse.persistence.moxy [228] Apakah itu GlassFish? GlassFish adalah projek sumber terbuka pelayan aplikasi untuk platform Jakarta EE yang dimulakan oleh Sun Microsystems, kemudian ditaja ol...

[t23e05] Masalah semasa uji endpoint API

Imej
بِسْـــــــــمِ ï·²ِالرَّØ­ْÙ…َÙ†ِ الرَّØ­ِيم . اَللَّÙ‡ُÙ…َّ صَÙ„ِّÙ‰ عَÙ„َÙ‰ Ù…ُØ­َÙ…َّدٍٍ، ÙˆَعَÙ„َÙ‰ آلِÙ‡ِ Ù…ُØ­َÙ…َّدٍٍ HTTP Status 404 - Not Found Sepatutnya masalah ini straight to the point je maksudnya webservice tak hidup. Tapi jadi complicated pula apabila webservice itu hidup. Rupa-rupanya kena tambah headers semasa send request. ~20230505~ jika kiriman ini bermanfaat, tolong lawat iklan yang ada ya, terima kasih

[t19i05] Smart Tomcat : NullPointerException

Hari ini buka Intellij Idea Community edition versi seperti berikut: IntelliJ IDEA 2019.2.1 (Community Edition) Build #IC-192.6262.58, built on August 20, 2019 Runtime version: 11.0.3+12-b304.39 amd64 VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o Windows 10 10.0 GC: ParNew, ConcurrentMarkSweep Memory: 1963M Cores: 8 Registry: ide.tree.ui.experimental=false, ide.balloon.shadow.size=0 Non-Bundled Plugins: DBN, Lombook Plugin, MoreUnit, Native Neighbourhood, com.alexanderpa.flyway.migration.creator, com.github.ranzou06.javadoc, com.poratu.idea.plugins.tomcat, com.weirddev.testme, com.chrisrm.idea.MaterialThemeUI, izhangzhihao.rainbow.brackets, me.xdrop.night-owl, org.sonarlint.idea, training Kemudian mulakan gradle explodeWar, kemudian cuba debug menggunakan Smart Tomcat tiba-tiba dapat error Error running 'Portal': java.lang.NullPointerException . Melalui carian Google, cuma perlu edit dan apply run configuration untuk projeck tersebut. Apakah halnya ni? https://intellij-s...

[t18c18] Invalid Column Name padahal ada ja column tu

Imej
Ini lagi satu error yang membuatkan Tedi stuck tiga hari tiga malam.  ERROR org.hibernate.engine.jdbc.spi.SqlExceptionHelper - invalid column name 'companyMain' Padahal property companyMain tu dah memang ada dalam CmsUser tu dan mapping-nya semua betul. Fikir punya fikir dan selepas solat hajat, tiba-tiba didatangkan ilham untuk rever satu class yang lain yang juga property foreign key dalam CmsUser, nama class tu StaffMain. Tedi check dalam tu memang ada companyMain juga, maka Tedi pun segera menghapuskannya. Selepas run apps, memang benarlah, itulah puncanya. Benda kecil yang menjadi besar.... huhuhu... Inilah masalahnya berkongsi kod dengan orang lain tapi tidak berada di tempat sama. Masalahnya mereka okay sahaja jadi environment dalam local machine Tedi sahajalah yang tak okay.   Mar 18, 2018 7:29:37 AM org.apache.tomcat.util.digester.SetPropertiesRule begin WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to ...

Unit test JUnit4 mock SLF4J logger atau LOG4J guna PowerMockito

Sekarang Tedi cuba menulis beberapa unit test untuk kod-kod legasi dengan pilihan tiada pilihan untuk menukar kod tersebut kepada kod mesra unit test. Salah satu kes apabila menulis unit test untuk kod macam ini ialah nak cover bahagian yang ada log siap ada condition lak tu pada logger tersebut! Terpaksalah Tedi mock logger tersebut di mana bukan mudah nak menjayakannya. Ralat 1: Cannot subclass final class Ralat 2: Unable to set internal state on a private field Ralat 1: Cannot subclass final class Kesimpulannya menurut pemahaman Tedi lah kan ada masalah untuk subclass final class tapi punca sebenarnya tu mungkin disebabkan oleh beberapa level class dalam kod kita. Contohnya macam di bawah nanti Tedi nak mock LoggerFactory tapi ada masalah pada Log4jLoggerAdapter. Mesej ralat: java.lang.IllegalArgumentException: Cannot subclass final class class org.slf4j.impl. Log4jLoggerAdapter at org.mockito.cglib.proxy.Enhancer.generateClass(Enhancer.java:447) at org.mocki...

[t22j28] SourceTree GIT fatal bad objects remote did not send all neccessary objects

بِسْـــــــــمِ ï·²ِالرَّØ­ْÙ…َÙ†ِ الرَّØ­ِيم . اَللَّÙ‡ُÙ…َّ صَÙ„ِّÙ‰ عَÙ„َÙ‰ Ù…ُØ­َÙ…َّدٍٍ، ÙˆَعَÙ„َÙ‰ آلِÙ‡ِ Ù…ُØ­َÙ…َّدٍٍ Seperti yang telah diceritakan dalam kiriman bertajuk  [t22j18] loose object stored in git objects is corrupt , GIT menemui pelbagai masalah setelah dipindahkan ke komputer riba baru. Masalah yang kedua adalah mesej "fatal: bad object" ketika operasi seperti fetch, pull, atau check out dilaksanakan. Kadangkala disertai dengan mesej "did not send all neccessary objects" . Setelah diperhatikan kami mendapati bahawa object yang dikatakan bad object itu ada terpampang dalam SourceTree tetapi tiada di GitLab remote . Ini bermaksud mungkin apa yang ada dalam local tidak terkini seperti dalam server . Jika sebelum ini kami gantikan semua dalam folder .git/objects, kali ini kami search nama object yang dipaparkan dalam mesej bad object itu, dan kemudian kami delete fail-fail yang berkenaan. Tetapi ikhtiar itu hanya berkesan kepada sebahagian bad object sahaj...

[t22j20] Netbeans 15 tersekat semasa start

بِسْـــــــــمِ ï·²ِالرَّØ­ْÙ…َÙ†ِ الرَّØ­ِيم . اَللَّÙ‡ُÙ…َّ صَÙ„ِّÙ‰ عَÙ„َÙ‰ Ù…ُØ­َÙ…َّدٍٍ، ÙˆَعَÙ„َÙ‰ آلِÙ‡ِ Ù…ُØ­َÙ…َّدٍٍ Alkisahnya Master terpaksa tukar cakera keras komputer riba beliau semalam kerana telah corrupt. Master mula install semua perisian yang diperlukan. Salah satunya adalah Netbeans IDE versi 15. Tetapi apabila Master mulakan program tersebut ia hanya akan crash semasa start up. Beberapa kali terminate dan restart pun tetap sama. Run as administrator pun sama juga. Tedi mengkaji apakah masalah dengan Netbeans 15 kepunyaan Master itu. Setelah melalui beberapa pembacaan Tedi mengesyaki bahawa puncanya adalah JDK yang digunakan di mana Master install JDK 8. Netbeans 15 memerlukan lebih daripada JDK 8 dan JDK 17 adalah salah satu JDK yang diterima. Setelah install JDK 17 dan tukar tetapan suapaya Netbeans menggunakan JDK 8, Netbeans 15 itu tidak crash lagi. ~~~ jika kiriman ini bermanfaat, tolong lawat iklan yang ada ya, terima kasih

[t22j18] loose object stored in git objects is corrupt

بِسْـــــــــمِ ï·²ِالرَّØ­ْÙ…َÙ†ِ الرَّØ­ِيم . اَللَّÙ‡ُÙ…َّ صَÙ„ِّÙ‰ عَÙ„َÙ‰ Ù…ُØ­َÙ…َّدٍٍ، ÙˆَعَÙ„َÙ‰ آلِÙ‡ِ Ù…ُØ­َÙ…َّدٍٍ Ini adalah error yang pelik semasa menggunakan SourceTree dan GIT. Jumpa error seperti di bawah: git -c diff.mnemonicprefix=false -c core.quotepath=false --no-optional-locks checkout --progress error: inflate: data stream error (incorrect header check) error: unable to unpack header fatal: loose object stored in .git/objects is corrupt Kebetulan pada masa ini komputer riba dengan sistem operasi Windows 10 menghadapi masalah di mana banyak fail hilang dalam partition D. Berlaku juga masalah tidak dapat akses folder dalam partition D kerana tetapan keselamatan telah berubah. Kawan arahkan backup semua fail yang ada dalam komputer riba ini. Jadi Tedi berpendapat bahawa masalah di atas adalah kerana masalah yang sama di mana fail dalam folder .git telah rosak. Apabila masalah ini berlaku kita tak boleh check out branch lain. Tak nampak changes yang telah dibuat. Banyak lagila...

[t22d07] Nota Mapstruct 1.2.0 Final JDK 7 Netbeans 13 Glassfish

بِسْـــــــــمِ ï·²ِالرَّØ­ْÙ…َÙ†ِ الرَّØ­ِيم . اَللَّÙ‡ُÙ…َّ صَÙ„ِّÙ‰ عَÙ„َÙ‰ Ù…ُØ­َÙ…َّدٍٍ، ÙˆَعَÙ„َÙ‰ آلِÙ‡ِ Ù…ُØ­َÙ…َّدٍٍ Hari ini Tedi mencuba satu pustaka pemetaan objek dalam Java bernama Mapstruct. Memandangkan Tedi perlu gunakan JDK 7 maka Mapstruct versi 1.2.0 Final dipilih kerana versi terkini tidak menyokong JDK 7. Rujukan penggunaan ada di  https://mapstruct.org/documentation/1.2/reference/html/#introduction .   Salah satu masalah yang ditemui semasa deployment ke dalam server Glassfish versi 3.1.2.2 ialah: Severe: Exception while loading the app : WELD-001408 Unsatisfied dependencies for type [CpamMapper] with qualifiers [@Default] at injection point [[field] @Inject private cmm.service.CmmService.cpamMapper] Rupa-rupanya kalau nak refer mapper gunakan annotation @Inject kena gunakan componentModel = "cdi" pada @Mapper. Lain pula jika gunakan Spring dan lain-lain, semuanya ada dalam rujukan. @Mapper(componentModel = "jssr330") public interface CpamMapper {   ......

[t22c10] Lembar Tipu Oracle SQL

بِسْـــــــــمِ ï·²ِالرَّØ­ْÙ…َÙ†ِ الرَّØ­ِيم . اَللَّÙ‡ُÙ…َّ صَÙ„ِّÙ‰ عَÙ„َÙ‰ Ù…ُØ­َÙ…َّدٍٍ، ÙˆَعَÙ„َÙ‰ آلِÙ‡ِ Ù…ُØ­َÙ…َّدٍٍ Menyampah betul Tedi setiap kali nak query database Oracle berkenaan date sahaja mesti lupa. Complicated betul nak filter date dalam Oracle DB. Nah Tedi lekatkan nota untuk tatapan pada masa hadapan, malas dah nak Google merata. Filter by date 1: SELECT * FROM nama_table 2: WHERE 1=1 3: AND TRUNC(nama_coluimn_date) = TO_DATE('22-02-2022', 'DD-MM-YYYY'); ~20220310~ jika kiriman ini bermanfaat, tolong lawat iklan yang ada ya, terima kasih

[t21l15] Guna Jasper Report Server dalam local

بِسْـــــــــمِ ï·²ِالرَّØ­ْÙ…َÙ†ِ الرَّØ­ِيم . اَللَّÙ‡ُÙ…َّ صَÙ„ِّÙ‰ عَÙ„َÙ‰ Ù…ُØ­َÙ…َّدٍٍ، ÙˆَعَÙ„َÙ‰ آلِÙ‡ِ Ù…ُØ­َÙ…َّدٍٍ Masalah semasa start jasper server report Service yang perlu start: apache Tomat 9.0 jasperreports tomcat jasperreportsPostgreSQL Kemudian pergi ke Dekstop dan click shortcut Start JRS Service. Boleh pergi ke laman http://localhost:8080/jasperserver/login.html  untuk periksa sama ada server tersebut telah up. Tapi jika page not available, jangan gusar kerana jurulatih kata ia akan ambil masa lama untuk run sekitar 5 minit dan Tedi belum jumpa cara untuk periksa status. username dan kata laluan sama iaitu: jasperadmin Jasper Server Report menggunakan port 8080 dan boleh dilarikan bersama EasyPHP.   ~20211215~ jika kiriman ini bermanfaat, tolong lawat iklan yang ada ya, terima kasih

Masalah Pembangunan EMS

بِسْـــــــــمِ ï·²ِالرَّØ­ْÙ…َÙ†ِ الرَّØ­ِيم Kadangkala masalah kecil bisa memberikan impak yang besar kepada kemajuan pembangunan sistem. Di sini disenaraikan masalah semasa membangunkan sistem EMS untuk rujukan masa hadapan Tiba-tiba sahaja tidak kenal beberapa library seperti hibernate Pastikan bahawa pilih profile yang betul sebelum build  contohnya pilih profile  GF4(local-windows) dan kemudian Build with Dependencies . Library tiada dalam GIT Entah kenapa ada masalah dengan beberapa library dan nampaknya tiada siapa mahu bereskan maka kenalah copy secara manual ke dalam folder .m2 . Tetapi cara yang lebih afdal ialah dengan memastikan alamat repository adalah betul. C:\Users\{nama_user}\.m2\repository EPAM di Staging asyik return 500 Restart glassfish.   EMS asyik redirect ke login page apabila tambah page dan menu baru Pastikan bahawa config.js point kepada source code ('main' : 'main') bukannya kepada compiled script ('main' : 'main-built').   ...

Popular