I'm trying to write a basic java application that would use thrift. The thing I'm missing is a working jar file.
I've downloaded 0.8.0 gz version of thrift from the official website download pages and created the jar archive on my own (jar cf thrift-0.8.0.jar src/org
). I've moved the new jar file into my project directory. Then, I've added this jar file manually to the project - I'm working in NetBeans IDE. Everything seems as it should work, but it doesn't - red error messages occur everywhere I want to use thrift libs. This is piece of my code:
package com.blogspot.symfonyworld.thrift;
import com.blogspot.symfonyworld.thrift.server.MainService;
import org.apache.thrift.TException;
public class MainServiceHandler implements MainService.Iface {
@Override
public int add(int n1, int n2) throws TException {
return n1 + n2;
}
@Override
public int sub(int n1, int n2) throws TException {
return n1 + n2;
}
}
and the other file:
/**
* Autogenerated by Thrift Compiler (0.8.0)
*
* DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
* @generated
*/
package com.blogspot.symfonyworld.thrift.server;
import org.apache.thrift.scheme.IScheme;
import org.apache.thrift.scheme.SchemeFactory;
import org.apache.thrift.scheme.StandardScheme;
import org.apache.thrift.scheme.TupleScheme;
import org.apache.thrift.protocol.TTupleProtocol;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.util.HashMap;
import java.util.EnumMap;
import java.util.Set;
import java.util.HashSet;
import java.util.EnumSet;
import java.util.Collections;
import java.util.BitSet;
import java.nio.ByteBuffer;
import java.util.Arrays;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class MainService {
public interface Iface {
public int add(int n1, int n2) throws org.apache.thrift.TException;
public int sub(int n1, int n2) throws org.apache.thrift.TException;
}
public interface AsyncIface {
public void add(int n1, int n2, org.apache.thrift.async.AsyncMethodCallback<AsyncClient.add_call> resultHandler) throws org.apache.thrift.TException;
public void sub(int n1, int n2, org.apache.thrift.async.AsyncMethodCallback<AsyncClient.sub_call> resultHandler) throws org.apache.thrift.TException;
}
When I run build, I get following errors:
ant -f /var/www/laughing-thrift-duck jar
init:
Deleting: /var/www/laughing-thrift-duck/build/built-jar.properties
deps-jar:
Updating property file: /var/www/laughing-thrift-duck/build/built-jar.properties
Compiling 2 source files to /var/www/laughing-thrift-duck/build/classes
/var/www/laughing-thrift-duck/src/com/blogspot/symfonyworld/thrift/MainServiceHandler.java:4: package org.apache.thrift does not exist
import org.apache.thrift.TException;
/var/www/laughing-thrift-duck/src/com/blogspot/symfonyworld/thrift/server/MainService.java:9: package org.apache.thrift.scheme does not exist
import org.apache.thrift.scheme.IScheme;
/var/www/laughing-thrift-duck/src/com/blogspot/symfonyworld/thrift/server/MainService.java:10: package org.apache.thrift.scheme does not exist
import org.apache.thrift.scheme.SchemeFactory;
/var/www/laughing-thrift-duck/src/com/blogspot/symfonyworld/thrift/server/MainService.java:11: package org.apache.thrift.scheme does not exist
import org.apache.thrift.scheme.StandardScheme;
/var/www/laughing-thrift-duck/src/com/blogspot/symfonyworld/thrift/server/MainService.java:13: package org.apache.thrift.scheme does not exist
import org.apache.thrift.scheme.TupleScheme;
/var/www/laughing-thrift-duck/src/com/blogspot/symfonyworld/thrift/server/MainService.java:14: package org.apache.thrift.protocol does not exist
import org.apache.thrift.protocol.TTupleProtocol;
# and many many more...
The main question is: package org.apache.thrift does not exist - how come?!
Can someone point me on what did I do wrong with importing a custom jar into my project? I think this has nothing to do with thrift precisely, but with importing jars in general.
I've downloaded 0.8.0 gz version of thrift from the official website download pages and created the jar archive on my own (jar cf thrift-0.8.0.jar src/org)
Why did you create your own jar? And why you created it with source files? A jar library must contain at least the bytecode classes, ready to be used.
You must let thrift compile itself into a jar and then use it:
/lib/java
ant
in terminal.jar
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With