Hi Dian,

What about rename api.java to japi if there is no unexpected compatibility
issue? I think we can always avoid use a `.java.` in package names.

Best,
tison.


Dian Fu <dian0511...@gmail.com> 于2019年9月26日周四 下午10:54写道:

> 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 <nwal...@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...@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 <nwal...@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 <nwal...@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/";,
> 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
>
> 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
>
>
>
>
>
>

Reply via email to