Hi Vitaly,

In general, Java does not allow classes outside of the default package to
import classes from within the default package.

I think this means that this is expected behavior, given that Avro says
non-namespaced schemas generate code in the default package.

For your particular issue, this means either restructuring your application
so that Main is in the default package or giving the schemas a namespace so
they'll be in some package. The latter is preferable; in your example
com.company or com.company.serialization would be appropriate.

HTH


On Fri, Oct 11, 2013 at 3:59 PM, Vitaly Gordon <vita...@gmail.com> wrote:

> Hi Doug,
> I've attached a maven project that contains code that shows the problem.
> The code is basically the same one from the Avro guide, but what is
> important to observe is that since the Main class has a package define, it
> cannot import the classes generated from the namespace-less schema.
>
> just run mvn:compile to get the compilation errors
>
> Thanks,
> Vitaly
>
>
> On Thu, Oct 10, 2013 at 1:58 PM, Doug Cutting <cutt...@apache.org> wrote:
>
>> I encourage you to please provide a complete test, code that fails.
>> If maven is involved, create a simple, Maven project that illustrates
>> the problem.
>>
>> Thanks,
>>
>> Doug
>>
>> On Wed, Oct 9, 2013 at 11:21 PM, Vitaly Gordon <vita...@gmail.com> wrote:
>> > Hi Doug,
>> > You are right, the code does compile with javac. Apparently it is some
>> maven
>> > error, where it doesn't like to compile package-less files.
>> >
>> > Having said that, I still have the issue of not being able to use these
>> java
>> > files in my code, because there is no way to import them. One thing I
>> tried
>> > that sometimes work is adding some arbitrary namespace to the avro
>> schema.
>> > However, when I try to read records using the new (with namespace)
>> schema, I
>> > get in return a generic record instead of a specific one. This behavior
>> can
>> > be observed in the same file I attached by adding an arbitrary
>> namespace to
>> > the schema before generating the Java classes from it.
>> >
>> > Is there any way to read specific records when the schema that was used
>> to
>> > write them contains no namespace?
>> >
>> > Thanks,
>> > Vitaly
>> >
>> >
>> > On Wed, Oct 9, 2013 at 6:07 PM, Doug Cutting <cutt...@apache.org>
>> wrote:
>> >>
>> >> Using the current trunk of Avro I am able to:
>> >>  - extract the schema from the data file you provided (using
>> >> avro-tools schema command)
>> >>  - generate Java classes for this schema (using the avro-tools compile
>> >> command)
>> >>  - compile these generated Java classes (using the javac command)
>> >>
>> >> Can you provide a complete case of what fails for you?
>> >>
>> >> Thanks,
>> >>
>> >> Doug
>> >>
>> >> On Wed, Oct 9, 2013 at 4:56 PM, Vitaly Gordon <vita...@gmail.com>
>> wrote:
>> >> > Does anyone else might have an idea how I can resolve this
>> >> > "namespace-less"
>> >> > Avro schema code generation?
>> >> >
>> >> > Thanks,
>> >> > Vitaly
>> >> >
>> >> >
>> >> > On Mon, Oct 7, 2013 at 2:04 PM, Vitaly Gordon <vita...@gmail.com>
>> wrote:
>> >> >>
>> >> >> Hi Sean,
>> >> >> Here is a file that contains a single record that I cannot read
>> using a
>> >> >> specific reader.
>> >> >>
>> >> >> It's hard for me to add code because the problem is a compilation
>> >> >> problem
>> >> >> with the generated Java files.
>> >> >>
>> >> >> So to recreate the problem:
>> >> >> 1. Extract the schema from the record
>> >> >> 2. Generate the code from the schema
>> >> >> 3. Compile
>> >> >>
>> >> >> Is there another way that I can describe the issue?
>> >> >>
>> >> >>
>> >> >>
>> >> >> On Mon, Oct 7, 2013 at 10:58 AM, Sean Busbey <bus...@cloudera.com>
>> >> >> wrote:
>> >> >>>
>> >> >>> Hi Vitay!
>> >> >>>
>> >> >>> Can you give us a minimal schema and test program that illustrates
>> the
>> >> >>> problem you're describing?
>> >> >>>
>> >> >>> --
>> >> >>> Sean
>> >> >>>
>> >> >>> On Oct 7, 2013 12:27 PM, "Vitaly Gordon" <vita...@gmail.com>
>> wrote:
>> >> >>>>
>> >> >>>> Hi All,
>> >> >>>> I am trying to read Avro data that its schema does not have a
>> >> >>>> namespace.
>> >> >>>> The problem is that I cannot compile the classes, because the
>> >> >>>> generated Java
>> >> >>>> code does not have a package. On the other hand, if I do add some
>> >> >>>> arbitrary
>> >> >>>> namespace to the schema, the record is resolved as a generic one,
>> >> >>>> which then
>> >> >>>> fails on ClassCastException to the specific record.
>> >> >>>>
>> >> >>>> Any ideas on how I can resolve this issue?
>> >> >>>>
>> >> >>>> Thanks,
>> >> >>>> Vitay
>> >> >>
>> >> >>
>> >> >
>> >
>> >
>>
>
>


-- 
Sean

Reply via email to