Announcement

Collapse
No announcement yet.

Cần giúp đỡ về vụ deploy Java Application

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Cần giúp đỡ về vụ deploy Java Application

    Cuối cùng cũng viết xong ứng dụng nhưng mình lại vướng vào việc deploy ứng dụng. Trước giờ chỉ code thôi, chưa bao giờ thử deploy nó cài trên máy khác cả.
    Mình muốn deploy ứng dụng của mình như những ứng dụng desktop khác, có file chạy và các thư mục liên quan. Mình đang tìm hiểu về Jar Tool nhưng nó quá dài và các ví dụ quá đơn giản, khó mà áp dụng vào trong trường hợp của mình được.
    Bạn nào đã từng deploy một ứng dụng Java kha khá (tầm phần mềm quản lý) thì cho mình xin yahoo hoặc skype hỏi chuyện nhá
    Waiting for the day my nickname get painted black and underlined ...!

  • #2
    Em thấy đơn giản nhất là deploy ra file .jar và nếu sang máy khác thì cài JRE phù hợp để chạy file .jar đó.
    Thân Lãng Tử Phiêu Du Theo Ngàn Gió,
    Chốn Phiêu Hồng Buông Kiếm Tựa Hồng Nhan

    Đời Đạo Gian

    Comment


    • #3
      Uh thì deploy thế nào cũng được, quan trọng là làm thế nào thôi :sweat:
      Trong trường hợp của mình, ứng dụng có 3 package, một thư mục lib chứa các jar lib, thư mục resource chứa một số hình ảnh ứng dụng sử dụng, thư mục template chứa các template excel và một số thư mục khác ứng dụng sẽ tạo ra trong quá trình hoạt động. Làm sao để build cho nó chạy được trên máy khác.
      Last edited by 08520099; 16-08-2013, 23:50.
      Waiting for the day my nickname get painted black and underlined ...!

      Comment


      • #4
        Dạ nếu anh dùng IDE Netbeans thì anh kích phải vào package của mình, và chọn Deploy. Sau đó nó sẽ cho ra .jar như mong đợi. (cái này em viết app cho ĐT thì chạy file đó ổn). Anh có thể tìm trên mạng, em thấy nào là web start, deploy swing..

        Hàng chính thức đây: https://netbeans.org/kb/articles/javase-deploy.html
        Người dùng có thể truy cập vào ứng dụng bằng cách:
        Kích đúp file .JAR
        Chạy từ command line
        ....
        Nếu anh xài Eclipse thì tự xử nha.
        Last edited by 11520246; 17-08-2013, 00:01.
        Thân Lãng Tử Phiêu Du Theo Ngàn Gió,
        Chốn Phiêu Hồng Buông Kiếm Tựa Hồng Nhan

        Đời Đạo Gian

        Comment


        • #5
          Anh thử xem phần "Adding Necessary Libraries" trong link em gửi. Em cũng chưa thử tới mức này.
          Thân Lãng Tử Phiêu Du Theo Ngàn Gió,
          Chốn Phiêu Hồng Buông Kiếm Tựa Hồng Nhan

          Đời Đạo Gian

          Comment


          • #6
            a sử dụng IDE nào, đa số quất Java thì chắc là xài Eclipse. A đã xuất ra được file .jar chưa? Còn tổ chức các thư mục hay file gì đó thì tùy ở cách a thiết kế và cách a code thôi. Tất cả các file .class và các resource đều đóng trong file jar cả, trong lúc chạy muốn tổ chức các thư mục thế nào thì tùy trong code tùy ý a thế nào nữa

            Comment


            • #7
              A sử dụng Command Line để build hoặc Eclipse thì e có thể giúp

              Comment


              • #8
                Originally posted by 09520334 View Post
                A sử dụng Command Line để build hoặc Eclipse thì e có thể giúp
                Uh a viết bằng Eclipse. Cho anh xin cái yahoo hoặc skype đi
                Waiting for the day my nickname get painted black and underlined ...!

                Comment


                • #9
                  Originally posted by 08520099 View Post
                  Uh a viết bằng Eclipse. Cho anh xin cái yahoo hoặc skype đi
                  A pm gmail quoctuan0000@gmail.com, hic ko có yh lẫn skype

                  Comment


                  • #10
                    Uh thôi hỏi luôn ở đây vậy
                    Em nói xem anh nên bắt đầu từ đâu. Từ post của em thì anh hiểu là mình cứ ném hết những cái cần của ứng dụng vào trong một file jar chứ ko cần giữ kiến trúc như khi đang code trong Eclipse?
                    Anh đang đọc tài liệu này nhưng mà cảm thấy khá là không khả thi hoặc sẽ tốn nhiều time + làm đi làm lại
                    Waiting for the day my nickname get painted black and underlined ...!

                    Comment


                    • #11
                      Đúng rùi, thông thường trong cái project đó, bao nhiêu file .class và resource (image, .lib, .txt, config file) thì tất cả quất trong file .jar hết, trong code để truy cập đến các resource thì nhớ là phải sử dụng hàm System.getResourceAsStream(String resource) (chứ ko được sử dụng bất kỳ một đường dẫn kiểu absolute path như C:\blah\blah.txt đến các resource đó bởi vì khi build ra thì resource đó được nén trong cái file .jar rồi nên các absolute path vô tác dụng, hàm getResourceAsStream trả về một inputstream đến các resource mà được nén trong file .jar sau khi build ak). Đó là cách thông thường nhất và chương trình khi xuất ra chỉ có 1 file duy nhất .jar. Khi copy file jar đó qua máy khác để chạy thì máy tính đó phải có cái JRE nhé (cái này bắt buộc rồi )
                      Để build theo cách này trong Eclipse thì click phải chuột vào project rùi chọn Export, trong bước thứ nhất chọn Export generated class file and resource, các tùy chọn còn lại thì tùy ý a, cái thứ 3 là có nén luôn mã nguồn vào trong file jar ko đó, tức là mấy cái file .java
                      Cách thứ 2 là sử dụng các tool bên ngoài, nhưng có lẽ sử dụng Eclipse là đủ
                      Cách thứ 3 là hình như cách này theo ý muốn của a, tức là khi build ra cũng chỉ có 1 file jar để chạy, nhưng bên cạnh đó còn có các thư mục khác chứa các resource như thư mục /image hay /workspace hoặc các CSDL, cái này tùy mỗi người có một sáng tạo riêng về tổ chức và cách giao tiếp với các resource. Theo kinh nghiệm e đã và đang làm thì trong project phải có 1 file gọi là file config chứa các thiết lập, và một hoặc nhiều class chịu trách nhiệm thực hiện các bước thiết lập hệ thống của phần mềm của mình trong lần chạy đầu tiên, kiểu như thực hiện các công việc như một bộ cài đặt (kiểu như file setup.exe trong lần chạy đầu tiên ak). Ví dụ điển hình nhất là như Eclipse trong lần chạy đầu tiên nó khởi động hơi chậm vì nó phải thiết lập và cài đặt các file, resource, và config cần thiết như thư mục workspace, JDK path,....
                      Hiện e có một số chương trình đã làm theo cách này, CSDL và resource chạy bên ngoài, nhưng hiện tại chưa public đc nên chưa có demo đc, tạm thời chỉ vậy đã. Kinh nghiệm cũng chỉ có vậy, e biết có nhiều tool mã nguồn mở rất hay nhưng chưa đủ trình để test và Eclipse (có thể kèm một vài plugin) là quá đủ
                      Last edited by 09520334; 17-08-2013, 01:17.

                      Comment


                      • #12
                        Quy tắc nhất là các file .class thì quất hết vào trong 1 file .jar duy nhất.
                        Cách thứ 3 để truy cập đến các tài nguyên thì hàm được sử dụng nhiểu nhất là System.getProperty("user.dir"). Hàm này trả về absolute path của file .jar. Ví dụ khi copy file jar này vào thư mục C:\blah thì nó trả về "C:\blah", copy vào C:\blah\bleh thì trả về "C:\blah\bleh" tức là trả về path của location của chương trình ak. Tùy vào đó rồi trong code tùy biến theo sở thích thôi . Thường thì trong code có 1 thư mục install nữa (kèm 1 file blah.config), trong thư mục này chứa các lớp chịu trách nhiệm cài đặt, thiết lập thông số, tạo CSDL trong lần chạy đầu tiên). Setup xong thì có thể cho tự xử (xóa đi) để tránh ai đó vô tình cài lại mất dữ liệu và thiết lập
                        Last edited by 09520334; 17-08-2013, 01:19.

                        Comment


                        • #13
                          Thế anh có một đám file thư viện (cỡ khoảng 2 chục cái file jar) thì tính sao Thả nó vô cục jar luôn hay là bỏ riêng rẽ?
                          Anh tìm hiểu thêm 1 chút về hàm getResourceAsStream thôi, hiện đang dùng System.getProperty("user.dir").
                          Waiting for the day my nickname get painted black and underlined ...!

                          Comment


                          • #14
                            OK, ba cách e vừa nói ở trên là dành việc deploy đối với các ứng dụng có resource, resource ở đây bao gồm như các file image, file audio, file config, blah, CSDL, blah bleh.... Bây giờ đối với bộ lib (library) của ứng dụng, tức là các file jar kèm theo, thì cũng có 2 cách.
                            Cách 1 là quất hết vào 1 file .jar của chương trình .
                            Cách 2 là tổ chức các file thư viện này bên ngoài file .jar, có lẽ hợp lý nhất là thêm một thư mục /lib và để các thư viện này trong đó. Cách này cũng đơn giản ko cần phải code thêm gì cả, và e nhấn mạnh lại rằng chỉ cần Eclipse là quá đủ, chẳng cần phải sử dụng các jar tools gì hết ak. Build như bình thường, a click phải chuột vào project, chọn Export, Java --> Runnable JAR file, Next
                            - Lauch Configuration: chọn project cần build
                            - Export Destination: ko quan trọng, chọn Desktop cho khỏe
                            - Library Handling:
                            - cái tùy chọn thứ hai (2) là quất mấy cái file thư viện (tức mấy cái file .jar thêm) vào trong 1 file .jar duy nhất của chương trình
                            - cái tùy chọn thứ ba là sẽ tổ chức cái file thư viện này bên ngoài file .jar của chương trình, cụ thể nếu a chọn cái này thì Eclipse sẽ tạo ra file .jar của chương trình rồi, sau đó tạo thêm cái thư mục /lib nữa để chứa các file jar thư viện của chương trình
                            Đơn giản nhé, muốn thả vô cục .jar hay bỏ riêng lẻ thì chọn cho phù hợp thôi. Nói chung xài Command Line để build là một nghệ thuật, còn ko thì sử dụng Eclipse quả thật là quá đủ, theo e thì đừng có ngâm cứu mấy cái jar tools chi nữa cho mệt .
                            Deploy ứng dụng cũng là một giai đoạn cực kỳ quan trọng, yêu cầu cả kinh nghiệm lẫn phải code thêm một số thứ yêu cầu, ví dụ như trong cách 3 em nêu ở trên, phải code các lớp chịu trách nhiệm cái đặt, thiết lập thông số, lưu các thông số chạy vào file config, blah bleh, sau đó trong code của chương trình tùy vào cách tổ chức để code hợp lý.... Còn ko nếu mới nhập nghề hoặc các ứng dụng nhỏ thì resource hay lib cứ quất chung hết vào 1 file .jar duy nhất. Nhưng nó thiếu chuyên nghiệp, nếu chương trình a lớn và có đầu tư công sức thì cũng nên tổ chức cho tốt . Eclipse là một IDE được viết bằng chính ngôn ngữ Java, a có thể vào trong thư mục cài đặt của nó sẽ thấy nó cũng tổ chức như thư mục /configuration để chứa các file config của chương trình, thư mục /lib để chứa các file thư viện (file .jar đó), thư mục plugin để chứa các file plugin,...

                            Còn vụ a chỉ xài hàm System.getProperty("user.dir"), nếu build ra theo kiểu 1, tất cả đều nằm trong 1 file .jar duy nhất thì chắc chắn chạy lỗi ??? Có phải đây là lý do mà a post bài này để hỏi cách build, đọc cách hỏi trong #1 có cảm giác như a đang muốn deploy chương trình trong đó sau khi deploy thì các thư mục sẽ được tổ chức giống như chúng được tổ chức trong Eclipse. Nhưng rất tiếc là Eclipse lại build nó vào trong 1 file .jar duy nhất và chương trình của a không thể hiển thị các hình ảnh ????
                            Last edited by 09520334; 17-08-2013, 07:58.

                            Comment


                            • #15
                              Em đã làm thử và thành công, sử dụng bộ thư viện nguồn mở SwingX (không phải Swing của Java). File thư viện swingx-all-1.6.3.jar e để riêng lẻ ra ngoài chứ không built 1 cục trong file .jar của chương trình. Hic, forum chỉ cho đính kèm file < 1MB :shot:, a có mail thì e gởi qua cho xem

                              Comment

                              LHQC

                              Collapse
                              Working...
                              X