2016-04-13 14 views
0

Heroku'da çalışan çok basit bir Spark uygulaması elde etmeye çalışıyorum. Yerel olarak iyi çalışır. Bazı sübtil Maven probleminden şüpheleniyorum çünkü Heroku'dan biraz anlayamadığım bazı Maven senaryolarını kullandım. İşte Java on Heroku, Main.class'ı bulamıyor

benim pom.xml var:

<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>SparkDemo</groupId> 
    <artifactId>SparkDemo</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <build> 
     <sourceDirectory>src</sourceDirectory> 
     <plugins> 
      <plugin> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>3.3</version> 
       <configuration> 
        <source>1.8</source> 
        <target>1.8</target> 
       </configuration> 
      </plugin> 
      <plugin> 
       <artifactId>maven-assembly-plugin</artifactId> 
       <executions> 
        <execution> 
         <phase>package</phase> 
         <goals> 
          <goal>single</goal> 
         </goals> 
        </execution> 
       </executions> 
       <configuration> 
        <descriptorRefs> 
         <!-- This tells Maven to include all dependencies --> 
         <descriptorRef>jar-with-dependencies</descriptorRef> 
        </descriptorRefs> 
        <archive> 
         <manifest> 
          <mainClass>Main</mainClass> 
         </manifest> 
        </archive> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>com.heroku.sdk</groupId> 
       <artifactId>heroku-maven-plugin</artifactId> 
       <version>0.4.4</version> 
       <configuration> 
        <jdkVersion>1.8</jdkVersion> 
        <!-- Use your own application name --> 
        <appName>still-journey-10861</appName> 
        <processTypes> 
         <!-- Tell Heroku how to launch your application --> 
         <!-- You might have to remove the ./ in front --> 
         <web>java -jar target/SparkDemo-0.0.1-SNAPSHOT-jar-with-dependencies.jar</web> 
        </processTypes> 
       </configuration> 
      </plugin> 

     </plugins> 
    </build> 
    <dependencies> 
     <dependency> 
      <groupId>com.sparkjava</groupId> 
      <artifactId>spark-core</artifactId> 
      <version>2.3</version> 
     </dependency> 
     <dependency> 
      <groupId>com.j2html</groupId> 
      <artifactId>j2html</artifactId> 
      <version>0.5.0</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.commons</groupId> 
      <artifactId>commons-csv</artifactId> 
      <version>1.2</version> 
     </dependency> 
    </dependencies> 
</project> 

Ben Heroku üzerinde Jar içine baktığımda orada ilgili sınıfına bakınız: ile, sınıf adı tamamlanmış olmalıdır

~ $ jar tf target/SparkDemo-0.0.1-SNAPSHOT.jar 
META-INF/ 
META-INF/MANIFEST.MF 
edu/ 
edu/brandeis/ 
edu/brandeis/cosi12b/ 
edu/brandeis/cosi12b/sparkdemo/ 
edu/brandeis/cosi12b/sparkdemo/Main.class 
edu/brandeis/cosi12b/sparkdemo/StudentChooserServer.class 
edu/brandeis/cosi12b/sparkdemo/StudentDirectory.class 
edu/brandeis/cosi12b/sparkdemo/StudentInfo.class 
studentnames.csv 
META-INF/maven/ 
META-INF/maven/SparkDemo/ 
META-INF/maven/SparkDemo/SparkDemo/ 
META-INF/maven/SparkDemo/SparkDemo/pom.xml 
META-INF/maven/SparkDemo/SparkDemo/pom.properties 

cevap

4

paket de. Yani <mainClass>Main</mainClass> yerine <mainClass>edu.brandeis.cosi12b.sparkdemo.Main</mainClass> olmalıdır.

+0

Teşekkürler, bana çok zaman kazandı! – pitosalas