flink-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Dian Fu <dian0511...@gmail.com>
Subject Re: Problems with java.utils
Date Thu, 26 Sep 2019 14:54:15 GMT
Hi Nick, 

There is a package named "org.apache.flink.table.api.java" in flink and so the import of "org.apache.flink.table.api._"
causes "org.apache.flink.table.api.java" imported. Then all the import of package starting
with "java" such as "import java.util.ArrayList" will try to find the classes under "org.apache.flink.table.api.java"
as Scala uses relative import by default. So I think nothing is wrong here. This is the behavior
of Scala language. You just need to use prefix of "_root_" to force using absolute import.


Regards,
Dian

> 在 2019年9月26日,下午10:26,Nicholas Walton <nwalton@me.com> 写道:
> 
> Dian
> 
> That fixed the problem thanks you. It would appear that someone has taken it upon themselves
to redefine part of the Java standard library in org.apache.flink.table.api._
> 
> NIck
> 
>> On 26 Sep 2019, at 15:16, Dian Fu <dian0511.fu@gmail.com <mailto:dian0511.fu@gmail.com>>
wrote:
>> 
>> Hi Nick,
>> 
>>>> [error] ………………/src/main/scala/org/example/Job.scala:30:13: object
util is not a member of package org.apache.flink.table.api.java
>>>> [error] import java.util.ArrayList
>> 
>> 
>> The error message shows that it tries to find "util.ArrayList" under package "org.apache.flink.table.api.java".
So you can try one of the following two solutions:
>> 1) Don't import "org.apache.flink.table.api._"
>> 2) Use absolute import: "import _root_.java.util.ArrayList"
>> 
>> Regards,
>> Dian
>> 
>>> 在 2019年9月26日,下午10:04,Nicholas Walton <nwalton@me.com <mailto:nwalton@me.com>>
写道:
>>> 
>>> I’ve shrunk the problem down to a minimal size. The code 
>>> 
>>> package org.example
>>> 
>>> import org.apache.flink.table.api._
>>> import org.apache.http.HttpHost
>>> 
>>> import java.util.ArrayList
>>> 
>>> object foo {
>>> 
>>>   val httpHosts = new ArrayList[HttpHost]
>>>   httpHosts.add(new HttpHost("samwise.local", 9200, "http"))
>>> 
>>> }
>>> will not compile, but remove the import org.apache.flink.table.api._ and all
is well
>>> 
>>> Nick
>>> 
>>> 
>>>> On 26 Sep 2019, at 12:53, Nicholas Walton <nwalton@me.com <mailto:nwalton@me.com>>
wrote:
>>>> 
>>>> I’m having a problem using ArrayList in Scala . The code is below
>>>> 
>>>> import org.apache.flink.core.fs._
>>>> import org.apache.flink.streaming.api._
>>>> import org.apache.flink.streaming.api.scala._
>>>> import org.apache.flink.table.api._
>>>> import org.apache.flink.table.api.scala._
>>>> import org.apache.flink.table.sinks._
>>>> import org.apache.http.HttpHost
>>>> import org.slf4j.LoggerFactory
>>>> 
>>>> import java.util.ArrayList
>>>> 
>>>> object Job {
>>>> 
>>>>   val httpHosts = new ArrayList[HttpHost]
>>>>   httpHosts.add(new HttpHost("samwise.local", 9200, "http"))
>>>>     …..
>>>> 
>>>> }
>>>> 
>>>> Scala refuses to recognise ArrayList. The IDE InteliJ likewise flags java.util
as not existing, even though it recognises ArrayList and suggest auto-insertion of the import
java.utils.ArrayList statement. The compilation errors are
>>>> 
>>>> [error] ………………/src/main/scala/org/example/Job.scala:30:13: object
util is not a member of package org.apache.flink.table.api.java
>>>> [error] import java.util.ArrayList
>>>> [error]             ^
>>>> [error] ………………/src/main/scala/org/example/Job.scala:34:23: not
found: type ArrayList
>>>> [error]   val httpHosts = new ArrayList[HttpHost]
>>>> [error]                       ^
>>>> [error] two errors found
>>>> [error] (Compile / compileIncremental) Compilation failed
>>>> 
>>>> Without the ArrayList reference the code compiles with no errors.
>>>> 
>>>> The sbt build file, if it helps is,
>>>> 
>>>> resolvers in ThisBuild ++= Seq("Apache Development Snapshot Repository" at
"https://repository.apache.org/content/repositories/snapshots/ <https://repository.apache.org/content/repositories/snapshots/>",
Resolver.mavenLocal)
>>>> 
>>>> name := "Flink MultiChannel Project"
>>>> 
>>>> version := "0.1-SNAPSHOT"
>>>> 
>>>> organization := "org.example"
>>>> 
>>>> scalaVersion in ThisBuild := "2.11.0"
>>>> 
>>>> val flinkVersion = "1.8.1"
>>>> 
>>>> val flinkDependencies = Seq(
>>>>   "org.apache.flink" %% "flink-scala" % flinkVersion ,
>>>>   "org.apache.flink" %% "flink-table" % "1.7.2" ,
>>>>   "org.apache.flink" %% "flink-connector-elasticsearch" % flinkVersion,
>>>>   "org.apache.flink" %% "flink-streaming-scala" % flinkVersion,
>>>>   "org.apache.httpcomponents" % "httpclient" % "4.5.10",
>>>>   "org.apache.httpcomponents" % "httpcore" % "4.4.11")
>>>> // https://mvnrepository.com/artifact/org.apache.httpcomponents/httpcore
<https://mvnrepository.com/artifact/org.apache.httpcomponents/httpcore>
>>>> 
>>>> lazy val root = (project in file(".")).
>>>>   settings(
>>>>     libraryDependencies ++= flinkDependencies)
>>>> 
>>>> mainClass in assembly := Some("org.example.Job")
>>>> 
>>>> // make run command include the provided dependencies
>>>> run in Compile := Defaults.runTask(fullClasspath in Compile, mainClass in
(Compile, run), runner in (Compile, run))
>>>> 
>>>> // exclude Scala library from assembly
>>>> assemblyOption in assembly := (assemblyOption in assembly).value.copy(includeScala
= false)
>>>> 
>>>> 
>>>> TIA
>>>> 
>>>> Nick
>>> 
>> 
> 


Mime
View raw message