2013-05-31 62 views
0

我沒有使用Maven,但我知道它首先檢查所需jar文件的本地存儲庫,如果沒有找到,它會從上述存儲庫。 在我的程序中,jar文件存在於本地存儲庫內的所需位置。 pom.xml文件也運行良好,但仍然程序無法找到任何文件中的導入。POM.xml運行正常,但仍然沒有解決java文件的導入問題

測試類的節目:

import javax.persistence.Column; 
import javax.persistence.Entity; 
import javax.persistence.GeneratedValue; 
import javax.persistence.Id; 
import javax.persistence.Table; 

import org.hibernate.annotations.Cache; 
import org.hibernate.annotations.CacheConcurrencyStrategy; 

@Entity 
@Table(name="MESSAGES") 
@Cache(region = "messages", usage = CacheConcurrencyStrategy.READ_WRITE) 

public class Message { 

    Message(){ 

    } 
    Message(String message){ 
     message_text=message; 
    } 
    @Id @GeneratedValue 
    @Column(name="MESSAGE_ID") 
    public Long id; 
    @Column(name="MESSAGE_TEXT") 
    public String message_text; 
    public Long getId() { 
     return id; 
    } 
    public void setId(Long id) { 
     this.id = id; 
    } 
    public String getMessage_text() { 
     return message_text; 
    } 
    public void setMessage_text(String message_text) { 
     this.message_text = message_text; 
    } 
} 

最後有問題的pom.xml文件:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>HibernateWithAnnotation</groupId> 
    <artifactId>HibernateWithAnnotation</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <name>HibernateWithAnnotation</name> 
    <repositories> 
     <repository> 
      <id>codelds</id> 
      <url>https://code.lds.org/nexus/content/groups/main-repo</url> 
     </repository> 
    </repositories> 
    <dependencies> 
     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-annotations</artifactId> 
      <version>3.5.1-Final</version> 

     </dependency> 
     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-commons-annotations</artifactId> 
      <version>3.2.0.Final</version> 
     </dependency> 


     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-core</artifactId> 
      <version>3.5.1-Final</version> 
     </dependency> 

     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-entitymanager</artifactId> 
      <version>3.5.1-Final</version> 
     </dependency> 
     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-validator</artifactId> 
      <version>4.1.0.Final</version> 
     </dependency> 
     <dependency> 
      <groupId>org.hibernate.javax.persistence</groupId> 
      <artifactId>hibernate-jpa-2.0-api</artifactId> 
      <version>1.0.0.Final</version> 
     </dependency> 

     <dependency> 
      <groupId>com.oracle</groupId> 
      <artifactId>ojdbc6</artifactId> 
      <version>11.2.0.3</version> 
     </dependency> 


     <!-- logging --> 
     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-api</artifactId> 
      <version>1.6.1</version> 
     </dependency> 
     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>jcl-over-slf4j</artifactId> 
      <version>1.6.1</version> 
      <scope>runtime</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-log4j12</artifactId> 
      <version>1.6.1</version> 
      <scope>runtime</scope> 
     </dependency> 

     <dependency> 
      <groupId>log4j</groupId> 
      <artifactId>log4j</artifactId> 
      <version>1.2.14</version> 
     </dependency> 


     <dependency> 
      <groupId>net.sf.ehcache</groupId> 
      <artifactId>ehcache-core</artifactId> 
      <version>2.4.5</version> 
     </dependency> 


    </dependencies> 
</project> 

的pom.xml犯規

import javax.persistence.Cacheable; 
import javax.persistence.EntityManager; 
import javax.persistence.EntityManagerFactory; 
import javax.persistence.EntityTransaction; 
import javax.persistence.Persistence; 
import javax.persistence.Query; 
public class TestAnnotation { 
    public static void main(String args[]){ 
     EntityManagerFactory factory=Persistence.createEntityManagerFactory("annotation"); 
     EntityManager manager=factory.createEntityManager(); 
     EntityTransaction transaction=manager.getTransaction(); 
     transaction.begin();  
     manager.persist(new Message("My Entity Test One More Example New")); 
     transaction.commit(); 
     System.out.println("First time calling Message Object"); 
     getMessage(manager,23); 
     System.out.println("Second time calling Message Object"); 
     getMessage(manager,23); 

     factory.close(); 
    } 


    public static void getMessage(EntityManager manager,long id){ 
     EntityTransaction transaction1=manager.getTransaction(); 
     transaction1.begin(); 
     Query q=manager.createQuery("from Message m where m.id="+id); 
     Message m=(Message)q.getSingleResult(); 
     System.out.println(m.getMessage_text()); 
     transaction1.commit(); 
    } 
} 

在程序中簡單的POJO包含任何錯誤。它的目標運行良好 - clean package。 但仍然在我的java文件中使用的導入未解析。 我的某個地方肯定有某些事發生了一些愚蠢的事情。請向我指出。

+0

您是否也運行安裝目標?安裝目標實際上是在類路徑上配置所需jar的工作 –

+0

@RachitAgrawal它也可以正常運行。 –

+0

您正在通過命令行或eclipse插件運行? –

回答

1

我假設你使用eclipse ..

嘗試執行mvn eclipse:eclipse。這設置了所有需要的類路徑條目。

+0

是我在做日食的一切。你的意思是我應該從cmd運行這個命令。 –

+0

是的,你可以。導航到項目的目錄並運行此命令。然後在eclipse中刷新項目。這應該這樣做 – Adarsh

0

有兩種不同的東西 - 用IDE開發並用maven構建所有東西。

Maven是獨立的東西,它不知道任何您使用的IDE。

你必須要麼配置你喜歡的IDE-maven插件,或只是手

1

轉到添加罐子到類路徑中包含pom.xml的目錄。 打開命令提示符,運行以下命令:

mvn install 

然後回到Eclipse刷新項目。所有依賴項都將配置爲

+0

mvn安裝只構建,打包並安裝它你的目標和本地回購。據我所知,它不會修改類路徑文件。 – Adarsh

0

Maven依賴關係僅在運行時使用。如果您正在使用任何類型的IDE進行編碼,則必須將所需的jar添加到類路徑中,以便在輸入時,針對關鍵字顯示建議和參考評論。

相關問題