Hello All,

We could really use Twill if there is some good working examples out there. I 
am trying to run hello world and I am seeing this issue. Can someone tell me 
where is twill looking for the jar and how can I tell it look in a certain 
folder?

java.util.concurrent.ExecutionException: java.lang.RuntimeException: 
java.io.FileNotFoundException: /twillsample-0.0.1-SNAPSHOT.one-jar.jar (No such 
file or directory)
        at 
com.google.common.util.concurrent.AbstractFuture$Sync.getValue(AbstractFuture.java:294)
        at 
com.google.common.util.concurrent.AbstractFuture$Sync.get(AbstractFuture.java:281)
        at 
com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:116)
        at 
com.google.common.util.concurrent.Uninterruptibles.getUninterruptibly(Uninterruptibles.java:132)
        at 
org.apache.twill.internal.AbstractExecutionServiceController.awaitTerminated(AbstractExecutionServiceController.java:117)
        at com.progressive.twillsample.HelloWorld.main(HelloWorld.java:83)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at com.simontuffs.onejar.Boot.run(Boot.java:340)
        at com.simontuffs.onejar.Boot.main(Boot.java:166)
Caused by: java.lang.RuntimeException: java.io.FileNotFoundException: 
/twillsample-0.0.1-SNAPSHOT.one-jar.jar (No such file or directory)
        at com.google.common.base.Throwables.propagate(Throwables.java:160)
        at 
org.apache.twill.internal.ApplicationBundler.saveEntry(ApplicationBundler.java:309)
        at 
org.apache.twill.internal.ApplicationBundler.putEntry(ApplicationBundler.java:232)
        at 
org.apache.twill.internal.ApplicationBundler.access$200(ApplicationBundler.java:57)
        at 
org.apache.twill.internal.ApplicationBundler$3.accept(ApplicationBundler.java:208)
       at 
org.apache.twill.internal.utils.Dependencies.findClassDependencies(Dependencies.java:80)


Command to run this : /opt/share/oracle/jvm/jdk1.8.0_92/bin/java -jar 
twillsample-0.0.1-SNAPSHOT.one-jar.jar zk:2181

Code is used from twill examples:

public class HelloWorld {
       public static final Logger LOG = 
LoggerFactory.getLogger(HelloWorld.class);

         /**
          * Hello World runnable that is provided to TwillRunnerService to be 
run.
          */
         private static class HelloWorldRunnable extends AbstractTwillRunnable {
           @Override
           public void run() {
             LOG.info("Hello World. My first distributed application.");
           }

           @Override
           public void stop() {
           }
         }

         public static void main(String[] args) {
           if (args.length < 1) {
             System.err.println("Arguments format: <host:port of zookeeper 
server>");
             System.exit(1);
           }

           String zkStr = args[0];
           YarnConfiguration yarnConfiguration = new 
YarnConfiguration(getConf());
           final TwillRunnerService twillRunner = new 
YarnTwillRunnerService(yarnConfiguration, zkStr);
           twillRunner.start();
           LOG.info("Twill Runner Started");
           String yarnClasspath =
             yarnConfiguration.get(YarnConfiguration.YARN_APPLICATION_CLASSPATH,
                                   
Joiner.on(",").join(YarnConfiguration.DEFAULT_YARN_APPLICATION_CLASSPATH));
           List<String> applicationClassPaths = Lists.newArrayList();
           Iterables.addAll(applicationClassPaths, 
Splitter.on(",").split(yarnClasspath));

           final TwillController controller = twillRunner.prepare(new 
HelloWorldRunnable())
               .addLogHandler(new PrinterLogHandler(new PrintWriter(System.out, 
true)))
               .withApplicationClassPaths(applicationClassPaths)
               .withBundlerClassAcceptor(new HadoopClassExcluder())
               .start();

           Runtime.getRuntime().addShutdownHook(new Thread() {
             @Override
             public void run() {
               try {
                 Futures.getUnchecked(controller.terminate());
               } finally {
                 twillRunner.stop();
               }
             }
           });

           try {
             controller.awaitTerminated();
           } catch (ExecutionException e) {
             e.printStackTrace();
           }
         }

         private static Configuration getConf() {
                Configuration conf = new Configuration();
                     conf.set(MRConfig.FRAMEWORK_NAME, 
MRConfig.YARN_FRAMEWORK_NAME);
                     conf.addResource(new 
Path("file:///etc/hadoop/conf/yarn-site.xml"));
                     conf.addResource(new 
Path("file:///etc/hadoop/conf/core-site.xml"));
                     conf.addResource(new 
Path("file:///etc/hadoop/conf/hdfs-site.xml"));
                     conf.addResource(new 
Path("file:///etc/hadoop/conf/mapred-site.xml"));
                     return conf;
       }

       static class HadoopClassExcluder extends ClassAcceptor {
           @Override
           public boolean accept(String className, URL classUrl, URL 
classPathUrl) {
             // exclude hadoop but not hbase package
             return !(className.startsWith("org.apache.hadoop") && 
!className.startsWith("org.apache.hadoop.hbase"));
           }
         }

}

Thanks,
Krishna

Reply via email to