2012-03-09 85 views
0

正常的GWT項目有客戶端代碼和服務器代碼。我想在同一個playN項目中編寫單獨的客戶端和服務器代碼。當我編譯當前的項目時,出現如下錯誤:找不到模塊java.lang.Thread,因爲它不受GWT客戶端代碼支持。對於我的項目,我需要添加大量的服務器代碼,並且需要完整的Java包。如何在playN項目中編寫客戶端和服務器代碼?

而主要問題是,我有我自己的庫,充滿了服務器端代碼,當我添加庫時,我遇到了這個問題。

我該如何區分客戶端代碼和服務器代碼,使其不會像上面提到的那樣給我一個錯誤?如果我們可以分離客戶端和服務器代碼,是否有一種方法可以將庫僅添加到服務器端代碼中?

在此先感謝..

回答

0

我不知道PlayN,但在GWT您使用

<source path='client' /> 

您.gwt.xml文件中定義哪些路徑將被編譯爲客戶端。模塊文件夾下的其他路徑被編譯爲服務器端代碼。

爲了更全面地理解你的問題,我git克隆了遊戲示例showcase,然後我看了一下文件層次結構(GWT部分的詳細說明)。

showcase/ 
    android/ 
     ... 
    core/ 
     ... 
    flash/ 
     ... 
    html/ 
     src/ 
     main/ 
      java/ 
       playn/ 
        showcase/ 
        html/ 
         ShowcaseHtml.java 
        Showcase.gwt.xml 
      webapp/ 
       WEB-INF/ 
        web.xml 
       Showcase.html 
     pom.xml 
    ios/ 
    ... 
    java/ 
    ... 
    build.xml 
    pom.xml 

正如我們可以看到我們有HTML/src目錄/主/ JAVA/playn /展示/ Showcase.gwt.xml並排着 HTML/src目錄/主/ JAVA/playn /展示/ html文件夾。

這裏是Showcase.gwt.xml內容:

<module rename-to='showcase'> 
    <inherits name='playn.PlayN'/> 
    <!-- for the peas sample --> 
    <inherits name="org.jbox2d.GwtBox2D" /> 
    <!-- for the menu UI --> 
    <inherits name='tripleplay.TriplePlay'/> 
    <!-- for enhanced logging --> 
    <inherits name="playn.logging.Enhanced" /> 

    <source path='core'/> 
    <source path='html'/> 

    <public path="resources" /> 

    <entry-point class='playn.showcase.html.ShowcaseHtml'/> 
</module> 

,以便爲我的經驗,如果存在一個HTML/src目錄/主/ JAVA/playn /展示/ 服務器在文件夾代碼它並沒有參考其他代碼的這段代碼,它必須由GWT編譯器來避免。然後用maven,如果聲明合適,它可以被編譯。

+0

嗨,在playN也在項目的HTML版本中,我們有gwt.xml文件。我們正在做的是將所有不同的包根文件夾路徑添加爲。像 Rockcollins 2012-03-09 10:51:03

+0

對於單個playN項目,您將擁有projectName,projectName-core,projectName-android,projectName-java,projectName-html等項目。我們將在html版本中擁有這個projectName.gwt.xml。 – Rockcollins 2012-03-09 10:54:38

+0

好吧,據我瞭解,你有projectName-html /文件夾包含一個projectName.gwt.xml與 source path =「view」/>指令。如果在projectName-html /中創建一個文件夾服務器並將服務器端代碼放入它,會發生什麼情況? (根本不添加任何) – Nicocube 2012-03-09 11:09:02

相關問題