29. February 2016

အလွဲများ - ၁

တကယ်တော့ ဒီတစ်ပတ် Monday က အေးဆေးရယ်။ ပြီးခဲ့တဲ့ အပတ်က ပြီးထားတဲ့ project ကို testing လုပ်ဖို့အတွက် user guide ရေးပေးရုံကလွဲရင် ဘာ task မှ လုပ်စရာကို မရှိတာ။ ဆိုတော့ကာ အရင်ဆုံး .exe ကို export ထုတ်ပြီး upload မလုပ်ခင် တစ်ခေါက်လောက်တော့ စမ်းကြည့်လိုက် ပါဦးမယ်လေဆိုတော့မှ error နဲ့စတိုးတော့တာပဲ။ IDE နဲ့ run တာကော Jar နဲ့ run တာကော နှစ်မျိုးလုံး အဆင်ပြေတယ်.. .exe ထုတ်ပြီး မစမ်းတော့ပါဘူးဆိုပြီး ပေါ့လိုက်တာ တကယ်လည်း စမ်းကြည့်ရော web interface အတွက် css တို့ js တို့ စတဲ့ static files တွေက အလုပ်မလုပ်ဘူး။ နည်းနည်းတော့ ပူထူသွားပေမယ့် ၂ နာရီခွဲကို နောက်ဆုံးထားပြီး ပေးရမှာဆိုတော့ မှီပါတယ်လေပေါ့။



တကယ်တမ်း code ပြန်ပြင်လိုက် ရသွားပြီလား စမ်းကြည့်လိုက်နဲ့ လုပ်ရတာဆိုတော့ အတော်ကို လက်ပေါက်ကပ် တာပါပဲ။ error က .exe နဲ့ run မှ တက်တာဆိုတော့ code ကို ပြင်၊ mvn package ကို run ပြီး .jar ထုတ်၊ ပြီးတော့မှ javapackager နဲ့ .exe ပြန်ထုတ်၊ တစ်ခါ window မှာ install လုပ်ပြီးသားဟာကို uninstall ပြန်လုပ်၊ .exe အသစ်ကို install ပြန်လုပ်။ code လေးနည်းနည်းရေးပြီး အလုပ်လုပ်လား စမ်းဖို့အရေးကို အဆင့်တွေ အများကြီး ထပ်ခါထပ်ခါ ပြန်လုပ်နေရတယ်။ မလိုအပ်ပဲနဲ့ ပိုကြာပြီးတော့ အလုပ်မတွင်ဘူးပေါ့။ အရင် php ရေးတုန်းကဆို code ပြင်ပြီး F5 နှိပ်ရတဲ့ အရသာကိုတောင် ပြန်လွမ်းမိတယ်။ ဒါပေမယ့် ကိုယ်က java developer စစ်စစ်ကြီး မဟုတ်ဘူးဆိုတော့ automate လုပ်လို့ရတဲ့ process ကို မသိတာလည်း ဖြစ်နိုင်တာပဲလေ။ java နဲ့ရေးပြီးသား desktop application တစ်ခုမှာ features တွေ ထပ်တိုးဖို့ကျတော့ ရုံးမှာ java နဲ့ နီးစပ်တာဆိုလို့ android သမားပဲရှိတာဆိုတော့ ကိုယ့်ခေါင်းပေါ်ပဲကျတာပေါ့။ ဘာပဲဖြစ်ဖြစ် ပြီးတာတော့ ပြီးသွားပေမယ့် ရေးနေကျမဟုတ်တော့ ရေးရတာ လက်ပိုဝင်တာတော့ အမှန်ပဲ။



Project တစ်ခုလုံးမှာ အဓိက ပြဿနာက resources directory ပဲ။ Server library အနေနဲ့ Grizzly မှာ static file directory ကို ဒီလို set ထားလို့ရပေမယ့် ..



StaticHttpHandler staticHttpHandler = new StaticHttpHandler("resources/assets", "/");
server.getServerConfiguration().addHttpHandler(staticHttpHandler);

တကယ်တမ်း .exe နဲ့ run တဲ့အခါမှာ အလုပ်မလုပ်တော့ဘူး။ ဘာလို့လဲဆိုတော့ packaging လုပ်တဲ့အခါ အဲဒီ assets folder က resources/ directory အောက်မှာ မဟုတ်တော့ပဲ root directory ထဲရောက်သွားတယ်။ အဲတော့ css, js files တွေက not found တွေဖြစ်ကုန်တယ်။ အလွယ်ဆုံးနည်းကတော့ assets အောက်က files တွေအားလုံးကို project တစ်ခုခွဲ၊ .jar export ထုတ်ပြီး အဲဒီ .jar ထဲက resources တွေကို ပြန်ခေါ်သုံးတာပဲ။ .jar file ထဲကခေါ်သုံးတာဆိုတော့ packaging လုပ်လို့ directory တွေလွဲမှာလည်း မပူရတော့ဘူးပေါ့။



server.getServerConfiguration().addHttpHandler(new CLStaticHttpHandler(YOURCLASS.class.getClassLoader(), "/"));

Java ရေးရင်းနဲ့ Velocity ဆိုတဲ့ Apache ထုတ်တဲ့ templating library တစ်ခုကို သဘောကျမိတယ်။ ရေးရတာလည်း တော်တော်လွယ်သလို မသိရင် php ရေးနေရသလိုပါပဲ။

#me #error #tech