2017-12-26 7 views
0

私はMavenを使い始めており、解決できない問題に遭遇しました。私のアプリケーションを実行するために必要なjarファイルはクラスパスにないようです。 mvnパッケージ中にMavenがこれを処理してはいけないのでしょうか?パッケージ化中のクラスパスにJARファイルが含まれていない

私はMVNパッケージを実行すると、私はエラーを取得:

[ERROR] /home/dev/Desktop/maventest/my-app/src/main/java/com/mycompany/app/App.java:[79,9] cannot find symbol 
    symbol: class UpnpService 
    location: class com.mycompany.app.App 
[ERROR] /home/dev/Desktop/maventest/my-app/src/main/java/com/mycompany/app/App.java:[79,39] cannot find symbol 
    symbol: class UpnpServiceImpl 
    location: class com.mycompany.app.App 

サンプルコードが言うん:(。シームレス - * jarファイル)「あなたはしがみつく-core.jarとその依存関係を必要とする、あなたのクラスパス上にこのコードをビルドして実行してください。」

これはMavenが処理する必要があるものではありませんか?そうでない場合は、どうすればこれらのファイルを含めることができますか?ここで

は私の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/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.mycompany.app</groupId> 
    <artifactId>my-app</artifactId> 
    <packaging>jar</packaging> 
    <version>1.0-SNAPSHOT</version> 
    <name>my-app</name> 
    <url>http://maven.apache.org</url> 

    <repositories> 
    <repository> 
     <id>4thline-repo</id> 
     <url>http://4thline.org/m2</url> 
     <snapshots> 
     <enabled>false</enabled> 
     </snapshots> 
    </repository> 
    </repositories> 

    <dependencies> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>3.8.1</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.fourthline.cling</groupId> 
     <artifactId>cling-core</artifactId> 
     <version>2.1.1</version> 
    </dependency> 
    </dependencies> 
</project> 

そして、ここでは、私が実行しようとしているサンプルコードです:

package com.mycompany.app; 

import org.fourthline.cling.model.message.header.STAllHeader; 
import org.fourthline.cling.model.meta.LocalDevice; 
import org.fourthline.cling.model.meta.RemoteDevice; 
import org.fourthline.cling.registry.Registry; 
import org.fourthline.cling.registry.RegistryListener; 

/** 
* Runs a simple UPnP discovery procedure. 
*/ 
public class App { 

    public static void main(String[] args) throws Exception { 

     // UPnP discovery is asynchronous, we need a callback 
     RegistryListener listener = new RegistryListener() { 

      public void remoteDeviceDiscoveryStarted(Registry registry, 
                RemoteDevice device) { 
       System.out.println(
         "Discovery started: " + device.getDisplayString() 
       ); 
      } 

      public void remoteDeviceDiscoveryFailed(Registry registry, 
                RemoteDevice device, 
                Exception ex) { 
       System.out.println(
         "Discovery failed: " + device.getDisplayString() + " => " + ex 
       ); 
      } 

      public void remoteDeviceAdded(Registry registry, RemoteDevice device) { 
       System.out.println(
         "Remote device available: " + device.getDisplayString() 
       ); 
      } 

      public void remoteDeviceUpdated(Registry registry, RemoteDevice device) { 
       System.out.println(
         "Remote device updated: " + device.getDisplayString() 
       ); 
      } 

      public void remoteDeviceRemoved(Registry registry, RemoteDevice device) { 
       System.out.println(
         "Remote device removed: " + device.getDisplayString() 
       ); 
      } 

      public void localDeviceAdded(Registry registry, LocalDevice device) { 
       System.out.println(
         "Local device added: " + device.getDisplayString() 
       ); 
      } 

      public void localDeviceRemoved(Registry registry, LocalDevice device) { 
       System.out.println(
         "Local device removed: " + device.getDisplayString() 
       ); 
      } 

      public void beforeShutdown(Registry registry) { 
       System.out.println(
         "Before shutdown, the registry has devices: " 
         + registry.getDevices().size() 
       ); 
      } 

      public void afterShutdown() { 
       System.out.println("Shutdown of registry complete!"); 

      } 
     }; 

     // This will create necessary network resources for UPnP right away 
     System.out.println("Starting Cling..."); 
     UpnpService upnpService = new UpnpServiceImpl(listener); 

     // Send a search message to all devices and services, they should respond soon 
     upnpService.getControlPoint().search(new STAllHeader()); 

     // Let's wait 10 seconds for them to respond 
     System.out.println("Waiting 10 seconds before shutting down..."); 
     Thread.sleep(10000); 

     // Release all resources and advertise BYEBYE to other UPnP devices 
     System.out.println("Stopping Cling..."); 
     upnpService.shutdown(); 
    } 
} 

サンプルコードがされてから:http://4thline.org/projects/cling/core/manual/cling-core-manual.xhtml#chapter.GettingStarted

だろう本当にあなたの助けに感謝。

答えて

0

Mavenはあなたとあなたのpom.xmlを置き換えの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/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.mycompany.app</groupId> 
    <artifactId>my-app</artifactId> 
    <packaging>jar</packaging> 
    <version>1.0-SNAPSHOT</version> 
    <name>my-app</name> 
    <url>http://maven.apache.org</url> 

    <repositories> 
    <repository> 
     <id>4thline-repo</id> 
     <url>http://4thline.org/m2</url> 
     <snapshots> 
     <enabled>false</enabled> 
     </snapshots> 
    </repository> 
    </repositories> 

    <dependencies> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>3.8.1</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.fourthline.cling</groupId> 
     <artifactId>cling-core</artifactId> 
     <version>2.1.1</version> 
    </dependency> 
    <!-- https://mvnrepository.com/artifact/org.fourthline.cling/cling-core --> 
    <dependency> 
     <groupId>org.fourthline.cling</groupId> 
     <artifactId>cling-core</artifactId> 
     <version>2.1.1</version> 
    </dependency> 
    </dependencies> 
</project> 

にしがみつくコアの依存関係を追加する必要があり、あなたの問題を解決するためには、あなたがのpom.xmlに宣言依存関係の面倒を見ますmavenがすべての依存関係を含むjarをダウンロードするのを見てください。私が使用した例では、インポート文が欠落していたよう

+0

は私のpom.xmlにすでにほかありませんか? – Jimbotron

1

はルックス:

import org.fourthline.cling.UpnpService; 
import org.fourthline.cling.UpnpServiceImpl; 
関連する問題