natty

[Resin] compile simple Java on Resin

In configuration on September 23, 2008 at 6:57 pm

โห วันนี้สงสัยต้องรีบกลับไปพักก่อน เพราะมึนสุดๆ เลย เป็นเรื่องที่ไม่น่าจะมึนเลย แต่ติดปัญหานั่นนี่อยู่นั่น

เรื่องมีอยู่ว่า จะพยายามเอา PHP ไปเรียก Jasper report ให้ได้ เพราะอุตส่าห์ทำ environment ตั้งไว้หมดแล้ว ลง resin server เอาไว้แล้วด้วย แต่เหลือแค่ยังไม่ได้ test ว่าใช้งานได้ไหม

และก็เพิ่งมาค้นพบตัวเองว่า ไม่เคยเอา simple java มารันบนนี้เลย แต่เคยเอา PHP ไปเรียก class java สำเร็จแล้ว – -”

ระหว่างทางก็เจอปัญหาปัญญาอ่อนมากมาย ถ้าคิดออกจะบอกเรื่อยๆ

สิ่งที่ทำคือ เอา Java App ที่รันอยู่บน JBoss มารันบน resin แล้ว structure มันก็ไม่เหมือนกัน สรุปคือจริงๆ ก็เหมือนๆ กันทุก container คือ เอา class ไปวางไว้ที่ classes folder ปกติบน JBoss มันจะแยก .java กับ .class เอาไว้คนละ folder (.java in src และ .class in build) แต่โดย default ของ resin มันจะอยู่ใน classes folder หมดเลย ตอนแรกหลงทางไปใหญ่ คิดว่าจะต้อง extends พวก quercus method อะไรด้วย สรุปแล้วไม่มีอะไร งงไปเอง – -”

แต่!!!!!!!!!!!!!! มันจะไม่ compile Java ให้เราเลย หากเราไม่ไปกำหนด webapp-id เอาไว้ใน /var/resin/conf/resin.xml (สำหรับ PHP ไม่มีปัญหาอะไร เพราะมันไม่ต้อง compile .java->.class เลยเอา app ไปวางได้โดยไม่ต้องกำหนดที่ resin.xml)

<web-app id="/test" root-directory="webapps/ROOT/test" archive-path="webapps/ROOT/test.war"/>

อ่อ หากเรารัน web ขึ้นมา แล้วมันบอกว่า permission denied ไม่สามารถเขียนไฟล์ .class ได้ ให้เราไป chown -R ให้ folder ที่จะเขียน .classes ก่อน

และอย่าลืมว่า java ต้องอยู่ใน package มิฉะนั้นมันจะไม่ถูก compile

Why do I have to put my classes in a package?

If I make a class that is not in a package, Resin does not recognize it and does not load it.

Starting with Java 1.4 the use of classes that are not in a package (sometimes called the “default” package”) is deprecated. Java classes should always be in a package. In some version of Java, packageless classes are not going to be supported at all.

The solution is to put all of your classes in a package.

See http://java.sun.com/j2se/1.4/compatibility.html, point #8, second bullet point.

สิ่งของที่อยู่ใน WebContent ของ jboss ก็เอาออกมาอยู่ path นอกสุดได้ตามปกติ

web.xml ก็ config ตามปกติไม่มีอะไรพิสดาร

และสิ่งที่ทำให้แก้นานที่สุดเมื่อกี้คือ พยายามแก้ไฟล์ java และก็รันใหม่ แต่ปรากฎว่าผลก็ยังเหมือนเิดิม เหมือนผีหลอก ตอนหลังจึงได้รู้ว่า มันไม่ยอมทับ file .class เดิม ให้ ก็เลยลองไปลบแล้วให้มัน compile ใหม่ ปรากฎว่าใช้งานได้ แอบงงนิดหน่อย เพราะคิดว่ามันเป็นแบบนี้แค่เป็นบางทีมั้ง ปกติไม่เห็นจะเคยเจอ – -*

และสิ่งที่ผิดที่สุดของวันนี้คือ หาเรื่องเองโดยการนั่งแก้ไฟล์ java ใน notepad แล้วก็เลยตาลาย ไม่เห็นสีสัน เหนื่อยโดยใช่เหตุ เพิ่งมารู้ตัวอีกทีตอนทำเสร็จแล้ว

jboss

jboss

resin

resin

อ่านไปอ่านมา ก็ไม่เห็นจะมีอะไรต้องมึนแล้ว แล้วตูมึนอะไรฟระ – -“

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: