Scala编译器构建错误JComboBox类型参数(Scala compiler build error JComboBox type parameters)
所以我正在尝试编译scala编译器,我已经克服了很多问题,试图完成这个,但我目前卡在quick.lib
这非常令人困惑,因为源代码直接来自scala团队,所以我知道它应该编译。 也采用旧版本,我知道在其他地方编译并测试,但得到相同的错误。
任何有关该问题的帮助或正确方向上的一点都将不胜感激。
quick.lib: [scalacfork] Compiling 103 files to C:\programming\scala\build\quick\classes\library [scalacfork] C:\programming\scala\src\swing\scala\swing\ComboBox.scala:162: error: class JComboBox takes type parameters [scalacfork] override lazy val peer: JComboBox = new JComboBox(ComboBox.newConstantModel(items)) with SuperMixin [scalacfork] ^ [scalacfork] C:\programming\scala\src\swing\scala\swing\ComboBox.scala:123: error: trait ComboBoxModel takes type parameters [scalacfork] def newConstantModel[A](items: Seq[A]): ComboBoxModel = { [scalacfork] ^ [scalacfork] C:\programming\scala\src\swing\scala\swing\ComboBox.scala:124: error: trait ComboBoxModel takes type parameters [scalacfork] new AbstractListModel with ComboBoxModel { [scalacfork] ^ [scalacfork] C:\programming\scala\src\swing\scala\swing\ComboBox.scala:134: error: type mismatch; [scalacfork] found : AnyRef [scalacfork] required: Nothing [scalacfork] def getElementAt(n: Int) = items(n).asInstanceOf[AnyRef] [scalacfork] ^ [scalacfork] C:\programming\scala\src\swing\scala\swing\ComboBox.scala:162: error: too many arguments for constructor Object: ()Object [scalacfork] override lazy val peer: JComboBox = new JComboBox(ComboBox.newConstantModel(items)) with SuperMixin [scalacfork] ^ [scalacfork] C:\programming\scala\src\swing\scala\swing\ListView.scala:32: error: trait ListCellRenderer takes type parameters [scalacfork] def wrap[A](r: ListCellRenderer): Renderer[A] = new Wrapped[A](r) [scalacfork] ^ [scalacfork] C:\programming\scala\src\swing\scala\swing\ListView.scala:27: error: class JList takes type parameters [scalacfork] def wrap[A](c: JList) = new ListView[A] { [scalacfork] ^ [scalacfork] C:\programming\scala\src\swing\scala\swing\ListView.scala:145: error: class JList takes type parameters [scalacfork] override lazy val peer: JList = new JList with SuperMixin [scalacfork] ^ [scalacfork] C:\programming\scala\src\swing\scala\swing\ListView.scala:37: error: trait ListCellRenderer takes type parameters [scalacfork] class Wrapped[A](override val peer: ListCellRenderer) extends Renderer[A] { [scalacfork] ^ [scalacfork] C:\programming\scala\src\swing\scala\swing\ListView.scala:72: error: trait ListCellRenderer takes type parameters [scalacfork] def peer: ListCellRenderer = new ListCellRenderer { [scalacfork] ^ [scalacfork] C:\programming\scala\src\swing\scala\swing\ListView.scala:72: error: trait ListCellRenderer takes type parameters [scalacfork] def peer: ListCellRenderer = new ListCellRenderer { [scalacfork] ^ [scalacfork] C:\programming\scala\src\swing\scala\swing\ListView.scala:73: error: class JList takes type parameters [scalacfork] def getListCellRendererComponent(list: JList, a: Any, index: Int, isSelected: Boolean, focused: Boolean) = [scalacfork] ^ [scalacfork] C:\programming\scala\src\swing\scala\swing\ListView.scala:126: error: trait ListCellRenderer takes type parameters [scalacfork] override lazy val peer: ListCellRenderer = new DefaultListCellRenderer [scalacfork] ^ [scalacfork] C:\programming\scala\src\swing\scala\swing\ListView.scala:153: error: type mismatch; [scalacfork] found : AnyRef [scalacfork] required: Nothing [scalacfork] def getElementAt(n: Int) = items(n).asInstanceOf[AnyRef] [scalacfork] ^ [scalacfork] C:\programming\scala\src\swing\scala\swing\ListView.scala:195: error: too many arguments for constructor Object: ()Object [scalacfork] object indices extends Indices(peer.getSelectedIndices) { [scalacfork] ^ [scalacfork] 15 errors found
So I'm trying to compile the scala compiler, I've overcome many problems trying to get this done but I am currently stuck at quick.lib
This is very confusing as the source is taken directly from the scala team themselves so I know it should compile. Also taken an old version I know compiles elsewhere and tested that but get the same error.
Any help on the issue or a point in the right direction would be greatly appreciated.
quick.lib: [scalacfork] Compiling 103 files to C:\programming\scala\build\quick\classes\library [scalacfork] C:\programming\scala\src\swing\scala\swing\ComboBox.scala:162: error: class JComboBox takes type parameters [scalacfork] override lazy val peer: JComboBox = new JComboBox(ComboBox.newConstantModel(items)) with SuperMixin [scalacfork] ^ [scalacfork] C:\programming\scala\src\swing\scala\swing\ComboBox.scala:123: error: trait ComboBoxModel takes type parameters [scalacfork] def newConstantModel[A](items: Seq[A]): ComboBoxModel = { [scalacfork] ^ [scalacfork] C:\programming\scala\src\swing\scala\swing\ComboBox.scala:124: error: trait ComboBoxModel takes type parameters [scalacfork] new AbstractListModel with ComboBoxModel { [scalacfork] ^ [scalacfork] C:\programming\scala\src\swing\scala\swing\ComboBox.scala:134: error: type mismatch; [scalacfork] found : AnyRef [scalacfork] required: Nothing [scalacfork] def getElementAt(n: Int) = items(n).asInstanceOf[AnyRef] [scalacfork] ^ [scalacfork] C:\programming\scala\src\swing\scala\swing\ComboBox.scala:162: error: too many arguments for constructor Object: ()Object [scalacfork] override lazy val peer: JComboBox = new JComboBox(ComboBox.newConstantModel(items)) with SuperMixin [scalacfork] ^ [scalacfork] C:\programming\scala\src\swing\scala\swing\ListView.scala:32: error: trait ListCellRenderer takes type parameters [scalacfork] def wrap[A](r: ListCellRenderer): Renderer[A] = new Wrapped[A](r) [scalacfork] ^ [scalacfork] C:\programming\scala\src\swing\scala\swing\ListView.scala:27: error: class JList takes type parameters [scalacfork] def wrap[A](c: JList) = new ListView[A] { [scalacfork] ^ [scalacfork] C:\programming\scala\src\swing\scala\swing\ListView.scala:145: error: class JList takes type parameters [scalacfork] override lazy val peer: JList = new JList with SuperMixin [scalacfork] ^ [scalacfork] C:\programming\scala\src\swing\scala\swing\ListView.scala:37: error: trait ListCellRenderer takes type parameters [scalacfork] class Wrapped[A](override val peer: ListCellRenderer) extends Renderer[A] { [scalacfork] ^ [scalacfork] C:\programming\scala\src\swing\scala\swing\ListView.scala:72: error: trait ListCellRenderer takes type parameters [scalacfork] def peer: ListCellRenderer = new ListCellRenderer { [scalacfork] ^ [scalacfork] C:\programming\scala\src\swing\scala\swing\ListView.scala:72: error: trait ListCellRenderer takes type parameters [scalacfork] def peer: ListCellRenderer = new ListCellRenderer { [scalacfork] ^ [scalacfork] C:\programming\scala\src\swing\scala\swing\ListView.scala:73: error: class JList takes type parameters [scalacfork] def getListCellRendererComponent(list: JList, a: Any, index: Int, isSelected: Boolean, focused: Boolean) = [scalacfork] ^ [scalacfork] C:\programming\scala\src\swing\scala\swing\ListView.scala:126: error: trait ListCellRenderer takes type parameters [scalacfork] override lazy val peer: ListCellRenderer = new DefaultListCellRenderer [scalacfork] ^ [scalacfork] C:\programming\scala\src\swing\scala\swing\ListView.scala:153: error: type mismatch; [scalacfork] found : AnyRef [scalacfork] required: Nothing [scalacfork] def getElementAt(n: Int) = items(n).asInstanceOf[AnyRef] [scalacfork] ^ [scalacfork] C:\programming\scala\src\swing\scala\swing\ListView.scala:195: error: too many arguments for constructor Object: ()Object [scalacfork] object indices extends Indices(peer.getSelectedIndices) { [scalacfork] ^ [scalacfork] 15 errors found
原文:https://stackoverflow.com/questions/8068119
最满意答案
因此,对于#2,您可能最终配置了一个Google HTTP(S)LoadBalancer,可能是因为您缺少
kubernetes.io/ingress.class: "nginx"
注释,如下所述: https:// github。 com / kubernetes / contrib / tree / master / ingress / controllers / nginx#running-multiple-ingress-controllers 。GKE拥有自己的入口控制器,您需要通过在nginx部署上粘贴该注释来覆盖它。 这篇文章对这些东西有很好的解释。
kubernetes文档对NodePort的含义有很好的描述 - 基本上,服务将在群集中的每个节点上从高范围分配端口,并且节点将从该端口转发流量到您的服务。 这是在不同环境中设置负载平衡器的一种方法,但对于您的方法,没有必要。 您可以省略微服务服务的
type
字段,并为其分配默认类型,即ClusterIP
。至于SSL,它可能是一些不同的东西。 我会确保你已经像在nginx控制器文档中描述的那样设置了Secret,例如使用
tls.cert
和tls.key
字段。我还要查看nginx控制器的日志 - 找出它运行的pod与
kubectl get pods
,然后拖尾它的日志:kubectl logs nginx-pod-<some-random-hash> -f
。 这将有助于确定您是否错误配置了任何内容,例如服务是否配置了任何端点。 大多数时候我搞砸了入口的东西,这是由于服务/部署的一些非常基本的错误配置。您还需要为指向LoadBalancer的静态IP的主机名设置DNS记录,或者使用cURL的
-H
标志 ping您的服务, 就像在文档中一样 ,否则您最终可能会被路由到默认的后端404。So, for #2, you've probably ended up provisioning a Google HTTP(S) LoadBalancer, probably because you're missing the
kubernetes.io/ingress.class: "nginx"
annotation as described here: https://github.com/kubernetes/contrib/tree/master/ingress/controllers/nginx#running-multiple-ingress-controllers.GKE has it's own ingress controller that you need to override by sticking that annotation on your nginx deployment. This article has a good explanation about that stuff.
The kubernetes docs have a pretty good description of what
NodePort
means - basically, the service will allocate a port from a high range on each Node in your cluster, and Nodes will forward traffic from that port to your service. It's one way of setting up load balancers in different environments, but for your approach it's not necessary. You can just omit thetype
field of your microservice's Service and it will be assigned the default type, which isClusterIP
.As for SSL, it could be a few different things. I would make sure you've got the Secret set up just as they describe in the nginx controller docs, eg with a
tls.cert
andtls.key
field.I'd also check the logs of the nginx controller - find out which pod it's running as with
kubectl get pods
, and then tail it's logs:kubectl logs nginx-pod-<some-random-hash> -f
. This will be helpful to find out if you've misconfigured anything, like if a service does not have any endpoints configured. Most of the time I've messed up the ingress stuff, it's been due to some pretty basic misconfiguration of Services/Deployments.You'll also need to set up a DNS record for your hostname pointed at the LoadBalancer's static IP, or else ping your service with cURL's
-H
flag as they do in the docs, otherwise you might end up getting routed to the default back end 404.
相关问答
更多-
现在对此没有很好的答案。 Ingress对象现在只是HTTP,我们并不真正支持单个集群中的多个级别的入口(尽管我们想要)。 GCE的HTTP LB还没有做websockets。 服务有一个缺陷,他们失去了客户端IP(我们正在努力)。 即使我们解决了这个问题,您也无法使用GCE的L7平衡器,因为您需要额外的端口。 在我们保留源IP之前,我能想到并且已被许多用户使用的最佳解决方法是: 使用HostPorts在一些或所有节点(标签控制)上运行您自己的haproxy或nginx甚至您自己的应用程序作为Daemons ...
-
鉴于每项服务都有自己的专用健康检查,您的配置看起来很合理。 请注意,如果您需要的资源配额超过默认资源配额且项目未处于免费试用阶段,则可以使用配额更改请求表单申请更多配额。 Your configuration looks reasonable, given that each service has its own dedicated health-check. Note that if you need more than the default resource quotas and your proj ...
-
Google HTTP / HTTPS负载均衡器不需要基于DNS的负载平衡。 它使用接收用户请求的全局IP地址。 流量在Google数据中心内部路由,传入请求以剩余容量发送到区域壁橱。 该信息记录在此链接中 。 Google HTTP/HTTPS load balancer does't require DNS-based load balancing. It uses a Global IP address which receives the user request. The traffic is r ...
-
要连接到MongoDB的副本集,您需要在标准URI连接方案中指定所有主机。 例如,要使用以下mongod主机描述与名为test的副本集的连接: db1.example.net on port 27017 db2.example.net on port 2500 您将使用类似于以下内容的连接字符串: mongodb://db1.example.net,db2.example.net:2500/?replicaSet=test 有关MongoDB的连接字符串URI格式的更多信息,请查看此artcile ...
-
因此,对于#2,您可能最终配置了一个Google HTTP(S)LoadBalancer,可能是因为您缺少kubernetes.io/ingress.class: "nginx"注释,如下所述: https:// github。 com / kubernetes / contrib / tree / master / ingress / controllers / nginx#running-multiple-ingress-controllers 。 GKE拥有自己的入口控制器,您需要通过在nginx部署 ...
-
如何在GCE Kubernetes中为loadBalancer指定区域(How to specify region for loadBalancer in GCE Kubernetes)[2023-01-26]
如果你只是暴露,你得到一个短暂的IP分配给你的转发规则,它显示在: gcloud计算转发规则列表 如果您想要静态IP,可以在与集群相同的区域中分配一个: gcloud计算地址创建test-us-central --region us-central1 并暴露负载均衡器给它的ip: kubectl公开$ RC-NAME --type = LoadBalancer --load-balancer-ip = $ IP 您不能在类型= LoadBalancer的服务的另一个区域中分配IP。 含义: gcloud计算 ... -
Google HTTP负载平衡不支持Expect 100 Continue。 要解决此问题,您必须添加以下代码行之一。 System.Net.ServicePointManager.Expect100Continue = false; rqst.ServicePoint.Expect100Continue = false; 例 HttpWebRequest rqst = (HttpWebRequest)HttpWebRequest.Create(url); rqst.Prox ...
-
Kubernetes(kube-proxy)中的群集内负载均衡器分布在所有群集节点中。 它将所有服务端点同步到节点上的iptables规则。 Kube-proxy由kubelet进行健康检查,如果它不健康30秒将重新启动(我认为这是可配置的)。 实际流量不通过kube-proxy二进制文件,因此如果kube-proxy确实卡住了,最糟糕的事情就是您对服务端点的看法变得陈旧。 有关kube-proxy的更多详细信息,请查看服务文档, 服务常见问题解答的文档和虚拟IP部分以及此kubernetes网络平台的46 ...
-
您尚未使用SSL支持编译HAProxy。 在构建HAProxy时请添加USE_OPENSSL = 1。 请注意,它需要安装libssl-dev软件包。 巴蒂斯特 You have not compiled HAProxy with SSL support. Please add USE_OPENSSL=1 when building HAProxy. Note that it requires libssl-dev package to be installed. Baptiste
-
您应该为这两个转发规则(http和https)使用相同的IP,如下例所示: 通过这样做,您可以拥有一条指向您的应用程序/网站的DNS A记录,用于http和https流量。 只需确保您在负载均衡器中创建/编辑转发规则之前已创建静态IP 。 You should use the same IP for both forwarding rules (http and https) like in this example: By doing so, you can have a single DNS A rec ...